* to a printf
*/
+#include <stdio.h>
+
/*
* Stage 1. Create a struct and a printf calling function
* that is connected to the tracepoint at load time.
struct trace_raw_##name { \
tstruct \
}; \
- static void trace_printf_##name(proto) \
+ static void trace_printf_##name(void *dummy, proto) \
{ \
struct trace_raw_##name entry_struct, *__entry; \
__entry = &entry_struct; \
\
printf(print); \
} \
+ static inline int register_event_##name(void *data) \
+ { \
+ return register_trace_##name(trace_printf_##name, data); \
+ } \
+ static inline int unregister_event_##name(void *data) \
+ { \
+ return unregister_trace_##name(trace_printf_##name, data); \
+ } \
+ struct trace_event __event_##name = { \
+ __tpstrtab_##name, \
+ register_event_##name, \
+ unregister_event_##name \
+ }; \
+ static struct trace_event * const __event_ptrs_##name \
+ __attribute__((used, section("__trace_events_ptrs"))) = \
+ &__event_##name; \
+ \
static void __attribute__((constructor)) init_##name() \
{ \
- printf("connecting tracepoint " #name "\n"); \
- register_trace_##name(trace_printf_##name); \
+ void *dummy = NULL; \
+ register_trace_##name(trace_printf_##name, dummy); \
}