aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/syscalls.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/syscalls.h')
-rw-r--r--include/linux/syscalls.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 5e5b4d33a31c..ce4b01c658eb 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -116,13 +116,20 @@ struct perf_counter_attr;
116 116
117#define SYSCALL_TRACE_ENTER_EVENT(sname) \ 117#define SYSCALL_TRACE_ENTER_EVENT(sname) \
118 static struct ftrace_event_call event_enter_##sname; \ 118 static struct ftrace_event_call event_enter_##sname; \
119 struct trace_event enter_syscall_print_##sname = { \
120 .trace = print_syscall_enter, \
121 }; \
119 static int init_enter_##sname(void) \ 122 static int init_enter_##sname(void) \
120 { \ 123 { \
121 int num; \ 124 int num, id; \
122 num = syscall_name_to_nr("sys"#sname); \ 125 num = syscall_name_to_nr("sys"#sname); \
123 if (num < 0) \ 126 if (num < 0) \
124 return -ENOSYS; \ 127 return -ENOSYS; \
125 register_ftrace_event(&event_syscall_enter); \ 128 id = register_ftrace_event(&enter_syscall_print_##sname);\
129 if (!id) \
130 return -ENODEV; \
131 event_enter_##sname.id = id; \
132 set_syscall_enter_id(num, id); \
126 INIT_LIST_HEAD(&event_enter_##sname.fields); \ 133 INIT_LIST_HEAD(&event_enter_##sname.fields); \
127 init_preds(&event_enter_##sname); \ 134 init_preds(&event_enter_##sname); \
128 return 0; \ 135 return 0; \
@@ -142,13 +149,20 @@ struct perf_counter_attr;
142 149
143#define SYSCALL_TRACE_EXIT_EVENT(sname) \ 150#define SYSCALL_TRACE_EXIT_EVENT(sname) \
144 static struct ftrace_event_call event_exit_##sname; \ 151 static struct ftrace_event_call event_exit_##sname; \
152 struct trace_event exit_syscall_print_##sname = { \
153 .trace = print_syscall_exit, \
154 }; \
145 static int init_exit_##sname(void) \ 155 static int init_exit_##sname(void) \
146 { \ 156 { \
147 int num; \ 157 int num, id; \
148 num = syscall_name_to_nr("sys"#sname); \ 158 num = syscall_name_to_nr("sys"#sname); \
149 if (num < 0) \ 159 if (num < 0) \
150 return -ENOSYS; \ 160 return -ENOSYS; \
151 register_ftrace_event(&event_syscall_exit); \ 161 id = register_ftrace_event(&exit_syscall_print_##sname);\
162 if (!id) \
163 return -ENODEV; \
164 event_exit_##sname.id = id; \
165 set_syscall_exit_id(num, id); \
152 INIT_LIST_HEAD(&event_exit_##sname.fields); \ 166 INIT_LIST_HEAD(&event_exit_##sname.fields); \
153 init_preds(&event_exit_##sname); \ 167 init_preds(&event_exit_##sname); \
154 return 0; \ 168 return 0; \