diff options
Diffstat (limited to 'kernel/trace/trace_syscalls.c')
-rw-r--r-- | kernel/trace/trace_syscalls.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index a21d366cae46..cceccf0d2e91 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
@@ -20,14 +20,37 @@ static int syscall_enter_register(struct ftrace_event_call *event, | |||
20 | static int syscall_exit_register(struct ftrace_event_call *event, | 20 | static int syscall_exit_register(struct ftrace_event_call *event, |
21 | enum trace_reg type); | 21 | enum trace_reg type); |
22 | 22 | ||
23 | static int syscall_enter_define_fields(struct ftrace_event_call *call); | ||
24 | static int syscall_exit_define_fields(struct ftrace_event_call *call); | ||
25 | |||
26 | static struct list_head * | ||
27 | syscall_get_enter_fields(struct ftrace_event_call *call) | ||
28 | { | ||
29 | struct syscall_metadata *entry = call->data; | ||
30 | |||
31 | return &entry->enter_fields; | ||
32 | } | ||
33 | |||
34 | static struct list_head * | ||
35 | syscall_get_exit_fields(struct ftrace_event_call *call) | ||
36 | { | ||
37 | struct syscall_metadata *entry = call->data; | ||
38 | |||
39 | return &entry->exit_fields; | ||
40 | } | ||
41 | |||
23 | struct ftrace_event_class event_class_syscall_enter = { | 42 | struct ftrace_event_class event_class_syscall_enter = { |
24 | .system = "syscalls", | 43 | .system = "syscalls", |
25 | .reg = syscall_enter_register | 44 | .reg = syscall_enter_register, |
45 | .define_fields = syscall_enter_define_fields, | ||
46 | .get_fields = syscall_get_enter_fields, | ||
26 | }; | 47 | }; |
27 | 48 | ||
28 | struct ftrace_event_class event_class_syscall_exit = { | 49 | struct ftrace_event_class event_class_syscall_exit = { |
29 | .system = "syscalls", | 50 | .system = "syscalls", |
30 | .reg = syscall_exit_register | 51 | .reg = syscall_exit_register, |
52 | .define_fields = syscall_exit_define_fields, | ||
53 | .get_fields = syscall_get_exit_fields, | ||
31 | }; | 54 | }; |
32 | 55 | ||
33 | extern unsigned long __start_syscalls_metadata[]; | 56 | extern unsigned long __start_syscalls_metadata[]; |
@@ -220,7 +243,7 @@ static void free_syscall_print_fmt(struct ftrace_event_call *call) | |||
220 | kfree(call->print_fmt); | 243 | kfree(call->print_fmt); |
221 | } | 244 | } |
222 | 245 | ||
223 | int syscall_enter_define_fields(struct ftrace_event_call *call) | 246 | static int syscall_enter_define_fields(struct ftrace_event_call *call) |
224 | { | 247 | { |
225 | struct syscall_trace_enter trace; | 248 | struct syscall_trace_enter trace; |
226 | struct syscall_metadata *meta = call->data; | 249 | struct syscall_metadata *meta = call->data; |
@@ -243,7 +266,7 @@ int syscall_enter_define_fields(struct ftrace_event_call *call) | |||
243 | return ret; | 266 | return ret; |
244 | } | 267 | } |
245 | 268 | ||
246 | int syscall_exit_define_fields(struct ftrace_event_call *call) | 269 | static int syscall_exit_define_fields(struct ftrace_event_call *call) |
247 | { | 270 | { |
248 | struct syscall_trace_exit trace; | 271 | struct syscall_trace_exit trace; |
249 | int ret; | 272 | int ret; |