Messages in this thread | | | Date | Thu, 21 Sep 2006 20:59:28 -0700 | From | Jeremy Fitzhardinge <> | Subject | Re: [PATCH] Linux Kernel Markers 0.7 for 2.6.17 (with type checking!) |
| |
Mathieu Desnoyers wrote: > * Jeremy Fitzhardinge (jeremy@goop.org) wrote: > >> Mathieu Desnoyers wrote: >> >>> #define MARK_SYM(name) \ >>> do { \ >>> __label__ here; \ >>> volatile static void *__mark_kprobe_##name \ >>> asm (MARK_CALL_PREFIX#name) \ >>> __attribute__((unused)) = &&here; \ >>> here: \ >>> do { } while(0); \ >>> } while(0) >>> >>> Which fixes the problem. Some tests showed me that the compiler does not >>> unroll >>> an otherwise unrolled loop when this specific macro is called. (test done >>> with >>> -funroll-all-loops). >>> >> Eh? I thought you wanted to avoid changing the generated code? >> Inhibiting loop unrolling could be a pretty large change... >> >> > > Yes, if possible. But letting gcc duplicate those symbols brings many questions, > such as : how can we name each of them differently ? Is there any way to > automatically increment an "identifier" counter in assembly ?
Use a section instead:
struct marker { const char *name; const void *location; };
#define MARKER_SYM(name) do { __label__ here; here: asm volatile(".section \".markers\"; .long %0, %1; .previous" : : "m" (#name), "m" (*&&here));\ } while(0);
Not a linker symbol, but it does let you find all the places containing a particular mark.
J - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |