diff options
author | Jason Baron <jbaron@redhat.com> | 2009-08-10 16:52:44 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2009-08-11 14:35:27 -0400 |
commit | 69fd4f0eb2ececbf8ade55e31a933e174965745e (patch) | |
tree | bebe7f5b88b8e2c6c240390e4e546d0c3522e79b | |
parent | f744bd576a827c5b02e756b81fc2578edf8179b8 (diff) |
tracing: Add ftrace_event_call void * 'data' field
add an optional void * pointer to 'ftrace_event_call' that is
passed in for regfunc and unregfunc.
This prepares for syscall tracepoints creation by passing the name of
the syscall we want to trace and then retrieve its number through our
arch syscall table.
Signed-off-by: Jason Baron <jbaron@redhat.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Jiaying Zhang <jiayingz@google.com>
Cc: Martin Bligh <mbligh@google.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Masami Hiramatsu <mhiramat@redhat.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-rw-r--r-- | include/linux/ftrace_event.h | 5 | ||||
-rw-r--r-- | include/trace/ftrace.h | 4 | ||||
-rw-r--r-- | kernel/trace/trace_events.c | 4 |
3 files changed, 7 insertions, 6 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index ac8c6f8cf242..8544f121d9f1 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -112,8 +112,8 @@ struct ftrace_event_call { | |||
112 | struct dentry *dir; | 112 | struct dentry *dir; |
113 | struct trace_event *event; | 113 | struct trace_event *event; |
114 | int enabled; | 114 | int enabled; |
115 | int (*regfunc)(void); | 115 | int (*regfunc)(void *); |
116 | void (*unregfunc)(void); | 116 | void (*unregfunc)(void *); |
117 | int id; | 117 | int id; |
118 | int (*raw_init)(void); | 118 | int (*raw_init)(void); |
119 | int (*show_format)(struct trace_seq *s); | 119 | int (*show_format)(struct trace_seq *s); |
@@ -122,6 +122,7 @@ struct ftrace_event_call { | |||
122 | int filter_active; | 122 | int filter_active; |
123 | struct event_filter *filter; | 123 | struct event_filter *filter; |
124 | void *mod; | 124 | void *mod; |
125 | void *data; | ||
125 | 126 | ||
126 | atomic_t profile_count; | 127 | atomic_t profile_count; |
127 | int (*profile_enable)(struct ftrace_event_call *); | 128 | int (*profile_enable)(struct ftrace_event_call *); |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index 25d3b02a06f8..46d81b5e8610 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -568,7 +568,7 @@ static void ftrace_raw_event_##call(proto) \ | |||
568 | trace_nowake_buffer_unlock_commit(event, irq_flags, pc); \ | 568 | trace_nowake_buffer_unlock_commit(event, irq_flags, pc); \ |
569 | } \ | 569 | } \ |
570 | \ | 570 | \ |
571 | static int ftrace_raw_reg_event_##call(void) \ | 571 | static int ftrace_raw_reg_event_##call(void *ptr) \ |
572 | { \ | 572 | { \ |
573 | int ret; \ | 573 | int ret; \ |
574 | \ | 574 | \ |
@@ -579,7 +579,7 @@ static int ftrace_raw_reg_event_##call(void) \ | |||
579 | return ret; \ | 579 | return ret; \ |
580 | } \ | 580 | } \ |
581 | \ | 581 | \ |
582 | static void ftrace_raw_unreg_event_##call(void) \ | 582 | static void ftrace_raw_unreg_event_##call(void *ptr) \ |
583 | { \ | 583 | { \ |
584 | unregister_trace_##call(ftrace_raw_event_##call); \ | 584 | unregister_trace_##call(ftrace_raw_event_##call); \ |
585 | } \ | 585 | } \ |
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index f95f8470dd38..1d289e2d6693 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -86,14 +86,14 @@ static void ftrace_event_enable_disable(struct ftrace_event_call *call, | |||
86 | if (call->enabled) { | 86 | if (call->enabled) { |
87 | call->enabled = 0; | 87 | call->enabled = 0; |
88 | tracing_stop_cmdline_record(); | 88 | tracing_stop_cmdline_record(); |
89 | call->unregfunc(); | 89 | call->unregfunc(call->data); |
90 | } | 90 | } |
91 | break; | 91 | break; |
92 | case 1: | 92 | case 1: |
93 | if (!call->enabled) { | 93 | if (!call->enabled) { |
94 | call->enabled = 1; | 94 | call->enabled = 1; |
95 | tracing_start_cmdline_record(); | 95 | tracing_start_cmdline_record(); |
96 | call->regfunc(); | 96 | call->regfunc(call->data); |
97 | } | 97 | } |
98 | break; | 98 | break; |
99 | } | 99 | } |