1 #ifndef _LINUX_KERNEL_TRACE_EVENTS_H
2 #define _LINUX_KERNEL_TRACE_EVENTS_H
4 #include <linux/debugfs.h>
5 #include <linux/ftrace.h>
8 struct ftrace_event_call {
13 void (*unregfunc)(void);
18 #define TPFMT(fmt, args...) fmt "\n", ##args
21 #define TRACE_FORMAT(call, proto, args, fmt) \
22 static void ftrace_event_##call(proto) \
24 event_trace_printk(_RET_IP_, "(" #call ") " fmt); \
27 static int ftrace_reg_event_##call(void) \
31 ret = register_trace_##call(ftrace_event_##call); \
33 pr_info("event trace: Could not activate trace point " \
38 static void ftrace_unreg_event_##call(void) \
40 unregister_trace_##call(ftrace_event_##call); \
43 static struct ftrace_event_call __used \
44 __attribute__((__aligned__(4))) \
45 __attribute__((section("_ftrace_events"))) event_##call = { \
47 .regfunc = ftrace_reg_event_##call, \
48 .unregfunc = ftrace_unreg_event_##call, \
51 void event_trace_printk(unsigned long ip, const char *fmt, ...);
52 extern struct ftrace_event_call __start_ftrace_events[];
53 extern struct ftrace_event_call __stop_ftrace_events[];
55 #endif /* _LINUX_KERNEL_TRACE_EVENTS_H */