tracing: Have syscall tracing call its own init function
authorSteven Rostedt <srostedt@redhat.com>
Tue, 29 Dec 2009 02:13:59 +0000 (21:13 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 6 Jan 2010 17:02:32 +0000 (12:02 -0500)
In the clean up of having all events call one specific function,
the syscall event init was changed to call this helper function.

With the new print_fmt updates, the syscalls need to do special
initializations. This patch converts the syscall events to call
its own init function again.

Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/syscalls.h
kernel/trace/trace_syscalls.c

index 207466a49f3d59b9d0927670c379d8be091a4d37..ed353d274a77a8edbd498db70a780b726d3fa8ea 100644 (file)
@@ -143,7 +143,7 @@ struct perf_event_attr;
                .name                   = "sys_enter"#sname,            \
                .system                 = "syscalls",                   \
                .event                  = &enter_syscall_print_##sname, \
-               .raw_init               = trace_event_raw_init,         \
+               .raw_init               = init_syscall_trace,           \
                .show_format            = syscall_enter_format,         \
                .define_fields          = syscall_enter_define_fields,  \
                .regfunc                = reg_event_syscall_enter,      \
@@ -165,7 +165,7 @@ struct perf_event_attr;
                .name                   = "sys_exit"#sname,             \
                .system                 = "syscalls",                   \
                .event                  = &exit_syscall_print_##sname,  \
-               .raw_init               = trace_event_raw_init,         \
+               .raw_init               = init_syscall_trace,           \
                .show_format            = syscall_exit_format,          \
                .define_fields          = syscall_exit_define_fields,   \
                .regfunc                = reg_event_syscall_exit,       \
index 1352b0a36fac35c5054c42a384bd25324c384d0b..a78e86349ecbf7b977ae3ab660a9adb1b50ead3e 100644 (file)
@@ -450,14 +450,14 @@ int init_syscall_trace(struct ftrace_event_call *call)
        if (set_syscall_print_fmt(call) < 0)
                return -ENOMEM;
 
-       id = register_ftrace_event(call->event);
-       if (!id) {
+       id = trace_event_raw_init(call);
+
+       if (id < 0) {
                free_syscall_print_fmt(call);
-               return -ENODEV;
+               return id;
        }
-       call->id = id;
-       INIT_LIST_HEAD(&call->fields);
-       return 0;
+
+       return id;
 }
 
 int __init init_ftrace_syscalls(void)