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