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
{
14 void (*unregfunc
)(void);
19 #define TPFMT(fmt, args...) fmt "\n", ##args
22 #define TRACE_FORMAT(call, proto, args, fmt) \
23 static void ftrace_event_##call(proto) \
25 event_trace_printk(_RET_IP_, "(" #call ") " fmt); \
28 static int ftrace_reg_event_##call(void) \
32 ret = register_trace_##call(ftrace_event_##call); \
34 pr_info("event trace: Could not activate trace point " \
39 static void ftrace_unreg_event_##call(void) \
41 unregister_trace_##call(ftrace_event_##call); \
44 static struct ftrace_event_call __used \
45 __attribute__((__aligned__(4))) \
46 __attribute__((section("_ftrace_events"))) event_##call = { \
48 .system = STR(TRACE_SYSTEM), \
49 .regfunc = ftrace_reg_event_##call, \
50 .unregfunc = ftrace_unreg_event_##call, \
53 void event_trace_printk(unsigned long ip
, const char *fmt
, ...);
54 extern struct ftrace_event_call __start_ftrace_events
[];
55 extern struct ftrace_event_call __stop_ftrace_events
[];
57 #endif /* _LINUX_KERNEL_TRACE_EVENTS_H */