Re: [PATCH] Linux Kernel Markers 0.20 for 2.6.17
Atsushi Nemoto <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.kernel.tracing,gmane.linux.systemtap |
|---|---|
| Message-ID | <[email protected]> |
On Sat, 30 Sep 2006 14:04:43 -0400, Mathieu Desnoyers <[email protected]> wrote: > +#define MARK(name, format, args...) \ > + do { \ > + static marker_probe_func *__mark_call_##name = \ > + __mark_empty_function; \ > + volatile static char __marker_enable_##name = 0; \ > + static const struct __mark_marker_c __mark_c_##name \ > + __attribute__((section(".markers.c"))) = \ > + { #name, &__mark_call_##name, format } ; \ > + static const struct __mark_marker __mark_##name \ > + __attribute__((section(".markers"), unused)) = \ > + { &__mark_c_##name, &__marker_enable_##name } ; \ > + if (unlikely(__marker_enable_##name)) { \ > + preempt_disable(); \ > + (*__mark_call_##name)(format, ## args); \ > + preempt_enable_no_resched(); \ > + } \ > + } while(0) When I compiled this with gcc 4.1.1 (mips), ".markers" section was empty. I suppose "unused" attribute is not suitable for modern gcc. Maybe __attribute_used__ should be used? The __attrribute_used__ is defined in compiler-gcc3.h as: #if __GNUC_MINOR__ >= 3 # define __attribute_used__ __attribute__((__used__)) #else # define __attribute_used__ __attribute__((__unused__)) #endif --- Atsushi Nemoto