Re: [PATCH 02/05] Linux Kernel Markers, architecture independant code.
Andrew Morton <[email protected]>
| Newsgroups | gmane.linux.systemtap,gmane.linux.kernel,gmane.linux.kernel.tracing |
|---|---|
| Message-ID | <[email protected]> |
On Sun, 11 Feb 2007 15:03:24 -0500 Mathieu Desnoyers <[email protected]> wrote: > Linux Kernel Markers, architecture independant code. > > Signed-off-by: Mathieu Desnoyers <[email protected]> > > ... > > + > +#ifndef MARK > +#define MARK GEN_MARK > +#define MARK_ENABLE_TYPE GEN_MARK_ENABLE_TYPE > +#define MARK_ENABLE_IMMEDIATE_OFFSET GEN_MARK_ENABLE_IMMEDIATE_OFFSET > +#endif Also perhaps this nastiness can go away once each architecture has asm/marker.h? > +#ifdef MARK_POLYMORPHIC What's this? Is it commented somewhere? (It should be...) > +static int marker_set_ins_enable(void *address, char enable) > +{ > +#ifdef CONFIG_X86_32 > + return arch_marker_set_ins_enable(address, enable); > +#else > + char newi[MARK_ENABLE_IMMEDIATE_OFFSET+1]; > + int size = MARK_ENABLE_IMMEDIATE_OFFSET+sizeof(MARK_ENABLE_TYPE); > + > + memcpy(newi, address, size); > + MARK_ENABLE(&newi[0]) = enable; > + memcpy(address, newi, size); > + flush_icache_range((unsigned long)address, size); > + return 0; > +#endif //CONFIG_X86_32 > +} eww. Can we put a suitable arch_marker_set_ins_enable() into each arch's marker.h? > +#else > +static int marker_set_ins_enable(void *address, char enable) > +{ > + return -EPERM; > +} > +#endif //MARK_POLYMORPHIC > + > > ... >