aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Baron <jbaron@redhat.com>2009-08-10 16:52:44 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2009-08-11 14:35:27 -0400
commit69fd4f0eb2ececbf8ade55e31a933e174965745e (patch)
treebebe7f5b88b8e2c6c240390e4e546d0c3522e79b
parentf744bd576a827c5b02e756b81fc2578edf8179b8 (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.h5
-rw-r--r--include/trace/ftrace.h4
-rw-r--r--kernel/trace/trace_events.c4
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 \
571static int ftrace_raw_reg_event_##call(void) \ 571static 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 \
582static void ftrace_raw_unreg_event_##call(void) \ 582static 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 }