aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_events.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/trace_events.h')
-rw-r--r--kernel/trace/trace_events.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/kernel/trace/trace_events.h b/kernel/trace/trace_events.h
new file mode 100644
index 000000000000..39342f86db27
--- /dev/null
+++ b/kernel/trace/trace_events.h
@@ -0,0 +1,52 @@
1#ifndef _LINUX_KERNEL_TRACE_EVENTS_H
2#define _LINUX_KERNEL_TRACE_EVENTS_H
3
4#include <linux/ftrace.h>
5#include "trace.h"
6
7struct ftrace_event_call {
8 char *name;
9 int enabled;
10 int (*regfunc)(void);
11 void (*unregfunc)(void);
12};
13
14
15#undef TPFMT
16#define TPFMT(fmt, args...) fmt "\n", ##args
17
18#undef DEFINE_TRACE_FMT
19#define DEFINE_TRACE_FMT(call, proto, args, fmt) \
20static void ftrace_event_##call(proto) \
21{ \
22 event_trace_printk(_RET_IP_, "(" #call ") " fmt); \
23} \
24 \
25static int ftrace_reg_event_##call(void) \
26{ \
27 int ret; \
28 \
29 ret = register_trace_##call(ftrace_event_##call); \
30 if (!ret) \
31 pr_info("event trace: Could not activate trace point " \
32 "probe to " #call); \
33 return ret; \
34} \
35 \
36static void ftrace_unreg_event_##call(void) \
37{ \
38 unregister_trace_##call(ftrace_event_##call); \
39} \
40 \
41static struct ftrace_event_call __used \
42__attribute__((section("_ftrace_events"))) event_##call = { \
43 .name = #call, \
44 .regfunc = ftrace_reg_event_##call, \
45 .unregfunc = ftrace_unreg_event_##call, \
46}
47
48void event_trace_printk(unsigned long ip, const char *fmt, ...);
49extern unsigned long __start_ftrace_events[];
50extern unsigned long __stop_ftrace_events[];
51
52#endif /* _LINUX_KERNEL_TRACE_EVENTS_H */