tracing: Ftrace dynamic ftrace_event_call support
[pandora-kernel.git] / include / linux / syscalls.h
index 5541e75..646102e 100644 (file)
@@ -165,7 +165,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
        struct trace_event enter_syscall_print_##sname = {              \
                .trace                  = print_syscall_enter,          \
        };                                                              \
-       static int init_enter_##sname(void)                             \
+       static int init_enter_##sname(struct ftrace_event_call *call)   \
        {                                                               \
                int num, id;                                            \
                num = syscall_name_to_nr("sys"#sname);                  \
@@ -189,6 +189,8 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
                .system                 = "syscalls",                   \
                .event                  = &event_syscall_enter,         \
                .raw_init               = init_enter_##sname,           \
+               .show_format            = syscall_enter_format,         \
+               .define_fields          = syscall_enter_define_fields,  \
                .regfunc                = reg_event_syscall_enter,      \
                .unregfunc              = unreg_event_syscall_enter,    \
                .data                   = "sys"#sname,                  \
@@ -200,7 +202,7 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
        struct trace_event exit_syscall_print_##sname = {               \
                .trace                  = print_syscall_exit,           \
        };                                                              \
-       static int init_exit_##sname(void)                              \
+       static int init_exit_##sname(struct ftrace_event_call *call)    \
        {                                                               \
                int num, id;                                            \
                num = syscall_name_to_nr("sys"#sname);                  \
@@ -224,6 +226,8 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
                .system                 = "syscalls",                   \
                .event                  = &event_syscall_exit,          \
                .raw_init               = init_exit_##sname,            \
+               .show_format            = syscall_exit_format,          \
+               .define_fields          = syscall_exit_define_fields,   \
                .regfunc                = reg_event_syscall_exit,       \
                .unregfunc              = unreg_event_syscall_exit,     \
                .data                   = "sys"#sname,                  \
@@ -231,6 +235,8 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
        }
 
 #define SYSCALL_METADATA(sname, nb)                            \
+       SYSCALL_TRACE_ENTER_EVENT(sname);                       \
+       SYSCALL_TRACE_EXIT_EVENT(sname);                        \
        static const struct syscall_metadata __used             \
          __attribute__((__aligned__(4)))                       \
          __attribute__((section("__syscalls_metadata")))       \
@@ -239,20 +245,22 @@ static void prof_sysexit_disable_##sname(struct ftrace_event_call *event_call) \
                .nb_args        = nb,                           \
                .types          = types_##sname,                \
                .args           = args_##sname,                 \
-       };                                                      \
-       SYSCALL_TRACE_ENTER_EVENT(sname);                       \
-       SYSCALL_TRACE_EXIT_EVENT(sname);
+               .enter_event    = &event_enter_##sname,         \
+               .exit_event     = &event_exit_##sname,          \
+       };
 
 #define SYSCALL_DEFINE0(sname)                                 \
+       SYSCALL_TRACE_ENTER_EVENT(_##sname);                    \
+       SYSCALL_TRACE_EXIT_EVENT(_##sname);                     \
        static const struct syscall_metadata __used             \
          __attribute__((__aligned__(4)))                       \
          __attribute__((section("__syscalls_metadata")))       \
          __syscall_meta_##sname = {                            \
                .name           = "sys_"#sname,                 \
                .nb_args        = 0,                            \
+               .enter_event    = &event_enter__##sname,        \
+               .exit_event     = &event_exit__##sname,         \
        };                                                      \
-       SYSCALL_TRACE_ENTER_EVENT(_##sname);                    \
-       SYSCALL_TRACE_EXIT_EVENT(_##sname);                     \
        asmlinkage long sys_##sname(void)
 #else
 #define SYSCALL_DEFINE0(name)     asmlinkage long sys_##name(void)