From b944a8585cf3a23ad910d246e7c07b42ff218cb9 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Thu, 22 Apr 2010 10:35:55 -0400 Subject: [PATCH] --- yaml --- r: 199135 b: refs/heads/master c: 2e33af029556cb8bd22bf4f86f42d540249177ea h: refs/heads/master i: 199133: 9178b2d204b580a38fbf9e863e18ace866d2716e 199131: 174845f0cbd74fad2a1d728f1f317eb40a31e1e6 199127: 697c202047d8caf6e3f9c5abf52a4437c91d8ce7 199119: eaae6ef0379e2f2c8d403006d0d8197b5d21f57e 199103: c9df853880018139ad37747511738e8c4681d47d v: v3 --- [refs] | 2 +- trunk/include/linux/ftrace_event.h | 5 ++- trunk/include/linux/syscalls.h | 14 ++++--- trunk/include/trace/ftrace.h | 11 +++--- trunk/include/trace/syscall.h | 4 +- trunk/kernel/trace/trace.h | 3 ++ trunk/kernel/trace/trace_events.c | 48 ++++++++++++++++++------ trunk/kernel/trace/trace_events_filter.c | 10 +++-- trunk/kernel/trace/trace_export.c | 14 +++---- trunk/kernel/trace/trace_kprobe.c | 8 ++-- trunk/kernel/trace/trace_syscalls.c | 31 +++++++++++++-- 11 files changed, 103 insertions(+), 47 deletions(-) diff --git a/[refs] b/[refs] index 8438de699be5..8bc8613d9893 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2239291aeb0379fe47980b0e560e0eb9fd7e82ec +refs/heads/master: 2e33af029556cb8bd22bf4f86f42d540249177ea diff --git a/trunk/include/linux/ftrace_event.h b/trunk/include/linux/ftrace_event.h index e665ed38b4bf..479c3c1876e6 100644 --- a/trunk/include/linux/ftrace_event.h +++ b/trunk/include/linux/ftrace_event.h @@ -130,6 +130,9 @@ struct ftrace_event_class { #endif int (*reg)(struct ftrace_event_call *event, enum trace_reg type); + int (*define_fields)(struct ftrace_event_call *); + struct list_head *(*get_fields)(struct ftrace_event_call *); + struct list_head fields; }; struct ftrace_event_call { @@ -142,8 +145,6 @@ struct ftrace_event_call { int id; const char *print_fmt; int (*raw_init)(struct ftrace_event_call *); - int (*define_fields)(struct ftrace_event_call *); - struct list_head fields; int filter_active; struct event_filter *filter; void *mod; diff --git a/trunk/include/linux/syscalls.h b/trunk/include/linux/syscalls.h index e3348c4c22e8..fd0f1f248cd8 100644 --- a/trunk/include/linux/syscalls.h +++ b/trunk/include/linux/syscalls.h @@ -122,7 +122,7 @@ extern struct ftrace_event_class event_class_syscall_enter; extern struct ftrace_event_class event_class_syscall_exit; #define SYSCALL_TRACE_ENTER_EVENT(sname) \ - static const struct syscall_metadata __syscall_meta_##sname; \ + 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 = { \ @@ -136,12 +136,11 @@ extern struct ftrace_event_class event_class_syscall_exit; .class = &event_class_syscall_enter, \ .event = &enter_syscall_print_##sname, \ .raw_init = init_syscall_trace, \ - .define_fields = syscall_enter_define_fields, \ .data = (void *)&__syscall_meta_##sname,\ } #define SYSCALL_TRACE_EXIT_EVENT(sname) \ - static const struct syscall_metadata __syscall_meta_##sname; \ + 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 = { \ @@ -155,14 +154,13 @@ extern struct ftrace_event_class event_class_syscall_exit; .class = &event_class_syscall_exit, \ .event = &exit_syscall_print_##sname, \ .raw_init = init_syscall_trace, \ - .define_fields = syscall_exit_define_fields, \ .data = (void *)&__syscall_meta_##sname,\ } #define SYSCALL_METADATA(sname, nb) \ SYSCALL_TRACE_ENTER_EVENT(sname); \ SYSCALL_TRACE_EXIT_EVENT(sname); \ - static const struct syscall_metadata __used \ + static struct syscall_metadata __used \ __attribute__((__aligned__(4))) \ __attribute__((section("__syscalls_metadata"))) \ __syscall_meta_##sname = { \ @@ -172,12 +170,14 @@ extern struct ftrace_event_class event_class_syscall_exit; .args = args_##sname, \ .enter_event = &event_enter_##sname, \ .exit_event = &event_exit_##sname, \ + .enter_fields = LIST_HEAD_INIT(__syscall_meta_##sname.enter_fields), \ + .exit_fields = LIST_HEAD_INIT(__syscall_meta_##sname.exit_fields), \ }; #define SYSCALL_DEFINE0(sname) \ SYSCALL_TRACE_ENTER_EVENT(_##sname); \ SYSCALL_TRACE_EXIT_EVENT(_##sname); \ - static const struct syscall_metadata __used \ + static struct syscall_metadata __used \ __attribute__((__aligned__(4))) \ __attribute__((section("__syscalls_metadata"))) \ __syscall_meta__##sname = { \ @@ -185,6 +185,8 @@ extern struct ftrace_event_class event_class_syscall_exit; .nb_args = 0, \ .enter_event = &event_enter__##sname, \ .exit_event = &event_exit__##sname, \ + .enter_fields = LIST_HEAD_INIT(__syscall_meta__##sname.enter_fields), \ + .exit_fields = LIST_HEAD_INIT(__syscall_meta__##sname.exit_fields), \ }; \ asmlinkage long sys_##sname(void) #else diff --git a/trunk/include/trace/ftrace.h b/trunk/include/trace/ftrace.h index 26d132418f92..c7e3bcd5d52f 100644 --- a/trunk/include/trace/ftrace.h +++ b/trunk/include/trace/ftrace.h @@ -430,6 +430,9 @@ static inline notrace int ftrace_get_offsets_##call( \ * * static struct ftrace_event_class __used event_class_