diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ftrace_event.h | 17 | ||||
-rw-r--r-- | include/linux/syscalls.h | 10 | ||||
-rw-r--r-- | include/trace/ftrace.h | 13 | ||||
-rw-r--r-- | include/trace/syscall.h | 6 |
4 files changed, 32 insertions, 14 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 393a839..4f77932 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h @@ -70,18 +70,25 @@ struct trace_iterator { }; +struct trace_event; + typedef enum print_line_t (*trace_print_func)(struct trace_iterator *iter, - int flags); -struct trace_event { - struct hlist_node node; - struct list_head list; - int type; + int flags, struct trace_event *event); + +struct trace_event_functions { trace_print_func trace; trace_print_func raw; trace_print_func hex; trace_print_func binary; }; +struct trace_event { + struct hlist_node node; + struct list_head list; + int type; + struct trace_event_functions *funcs; +}; + extern int register_ftrace_event(struct trace_event *event); extern int unregister_ftrace_event(struct trace_event *event); diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 211c704..f725677 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -125,9 +125,12 @@ extern struct ftrace_event_class event_class_syscall_exit; static struct syscall_metadata __syscall_meta_##sname; \ static struct ftrace_event_call \ __attribute__((__aligned__(4))) event_enter_##sname; \ - static struct trace_event enter_syscall_print_##sname = { \ + static struct trace_event_functions enter_syscall_print_funcs_##sname = { \ .trace = print_syscall_enter, \ }; \ + static struct trace_event enter_syscall_print_##sname = { \ + .funcs = &enter_syscall_print_funcs_##sname, \ + }; \ static struct ftrace_event_call __used \ __attribute__((__aligned__(4))) \ __attribute__((section("_ftrace_events"))) \ @@ -142,9 +145,12 @@ extern struct ftrace_event_class event_class_syscall_exit; static struct syscall_metadata __syscall_meta_##sname; \ static struct ftrace_event_call \ __attribute__((__aligned__(4))) event_exit_##sname; \ - static struct trace_event exit_syscall_print_##sname = { \ + static struct trace_event_functions exit_syscall_print_funcs_##sname = { \ .trace = print_syscall_exit, \ }; \ + static struct trace_event exit_syscall_print_##sname = { \ + .funcs = &exit_syscall_print_funcs_##sname, \ + }; \ static struct ftrace_event_call __used \ __attribute__((__aligned__(4))) \ __attribute__((section("_ftrace_events"))) \ diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index e7eb334..51ed7f35 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h @@ -239,7 +239,8 @@ ftrace_raw_output_id_##call(int event_id, const char *name, \ #undef DEFINE_EVENT #define DEFINE_EVENT(template, name, proto, args) \ static notrace enum print_line_t \ -ftrace_raw_output_##name(struct trace_iterator *iter, int flags) \ +ftrace_raw_output_##name(struct trace_iterator *iter, int flags, \ + struct trace_event *event) \ { \ return ftrace_raw_output_id_##template(event_##name.id, \ #name, iter, flags); \ @@ -248,7 +249,8 @@ ftrace_raw_output_##name(struct trace_iterator *iter, int flags) \ #undef DEFINE_EVENT_PRINT #define DEFINE_EVENT_PRINT(template, call, proto, args, print) \ static notrace enum print_line_t \ -ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \ +ftrace_raw_output_##call(struct trace_iterator *iter, int flags, \ + struct trace_event *event) \ { \ struct trace_seq *s = &iter->seq; \ struct ftrace_raw_##template *field; \ @@ -531,11 +533,12 @@ ftrace_raw_event_##call(void *__data, proto) \ #undef DEFINE_EVENT #define DEFINE_EVENT(template, call, proto, args) \ - \ -static struct trace_event ftrace_event_type_##call = { \ +static struct trace_event_functions ftrace_event_type_funcs_##call = { \ .trace = ftrace_raw_output_##call, \ }; \ - \ +static struct trace_event ftrace_event_type_##call = { \ + .funcs = &ftrace_event_type_funcs_##call, \ +}; \ static inline void ftrace_test_probe_##call(void) \ { \ check_trace_callback_type_##call(ftrace_raw_event_##template); \ diff --git a/include/trace/syscall.h b/include/trace/syscall.h index 3964774..257e089 100644 --- a/include/trace/syscall.h +++ b/include/trace/syscall.h @@ -42,8 +42,10 @@ extern int reg_event_syscall_exit(struct ftrace_event_call *call); extern void unreg_event_syscall_exit(struct ftrace_event_call *call); extern int ftrace_format_syscall(struct ftrace_event_call *call, struct trace_seq *s); -enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags); -enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags); +enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags, + struct trace_event *event); +enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags, + struct trace_event *event); #endif #ifdef CONFIG_PERF_EVENTS |