diff options
author | Steven Rostedt <rostedt@goodmis.org> | 2008-05-22 11:49:22 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-26 16:51:49 -0400 |
commit | 41bc8144d02028133bcd1d545023c6f49e8b2411 (patch) | |
tree | 382a6bbd0560df129c27b490aca36404edd7b19a /kernel/trace/trace_sched_switch.c | |
parent | 41c52c0db9607e59f90da7da5309489fa06e887f (diff) |
ftrace: fix up cmdline recording
The new work with converting the trace hooks over to markers broke the
command line recording of ftrace. This patch fixes it again.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/trace/trace_sched_switch.c')
-rw-r--r-- | kernel/trace/trace_sched_switch.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/kernel/trace/trace_sched_switch.c b/kernel/trace/trace_sched_switch.c index 798ec0dc863..c16935d3bc5 100644 --- a/kernel/trace/trace_sched_switch.c +++ b/kernel/trace/trace_sched_switch.c | |||
@@ -29,6 +29,9 @@ sched_switch_func(void *private, void *__rq, struct task_struct *prev, | |||
29 | long disabled; | 29 | long disabled; |
30 | int cpu; | 30 | int cpu; |
31 | 31 | ||
32 | tracing_record_cmdline(prev); | ||
33 | tracing_record_cmdline(next); | ||
34 | |||
32 | if (!tracer_enabled) | 35 | if (!tracer_enabled) |
33 | return; | 36 | return; |
34 | 37 | ||
@@ -63,8 +66,6 @@ sched_switch_callback(void *probe_data, void *call_data, | |||
63 | prev = va_arg(*args, typeof(prev)); | 66 | prev = va_arg(*args, typeof(prev)); |
64 | next = va_arg(*args, typeof(next)); | 67 | next = va_arg(*args, typeof(next)); |
65 | 68 | ||
66 | tracing_record_cmdline(prev); | ||
67 | |||
68 | /* | 69 | /* |
69 | * If tracer_switch_func only points to the local | 70 | * If tracer_switch_func only points to the local |
70 | * switch func, it still needs the ptr passed to it. | 71 | * switch func, it still needs the ptr passed to it. |
@@ -213,18 +214,26 @@ void tracing_stop_sched_switch(void) | |||
213 | tracing_sched_unregister(); | 214 | tracing_sched_unregister(); |
214 | } | 215 | } |
215 | 216 | ||
217 | void tracing_start_cmdline_record(void) | ||
218 | { | ||
219 | tracing_start_sched_switch(); | ||
220 | } | ||
221 | |||
222 | void tracing_stop_cmdline_record(void) | ||
223 | { | ||
224 | tracing_stop_sched_switch(); | ||
225 | } | ||
226 | |||
216 | static void start_sched_trace(struct trace_array *tr) | 227 | static void start_sched_trace(struct trace_array *tr) |
217 | { | 228 | { |
218 | sched_switch_reset(tr); | 229 | sched_switch_reset(tr); |
219 | atomic_inc(&trace_record_cmdline_enabled); | ||
220 | tracer_enabled = 1; | 230 | tracer_enabled = 1; |
221 | tracing_start_sched_switch(); | 231 | tracing_start_cmdline_record(); |
222 | } | 232 | } |
223 | 233 | ||
224 | static void stop_sched_trace(struct trace_array *tr) | 234 | static void stop_sched_trace(struct trace_array *tr) |
225 | { | 235 | { |
226 | tracing_stop_sched_switch(); | 236 | tracing_stop_cmdline_record(); |
227 | atomic_dec(&trace_record_cmdline_enabled); | ||
228 | tracer_enabled = 0; | 237 | tracer_enabled = 0; |
229 | } | 238 | } |
230 | 239 | ||