diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-03-04 22:15:30 -0500 |
---|---|---|
committer | Steven Rostedt <srostedt@redhat.com> | 2009-03-04 22:15:30 -0500 |
commit | e9d25fe6eaa2c720bb3ea661b660e58d54fa38bf (patch) | |
tree | 8121a9fc4021e86499c404e0b1012a36e8d0b00e /kernel/trace/trace_sched_wakeup.c | |
parent | 27d48be84477d2f0a2e2ac3738a3971dece631d5 (diff) |
tracing: have latency tracers set the latency format
The latency tracers (irqsoff, preemptoff, preemptirqsoff, and wakeup)
are pretty useless with the default output format. This patch makes them
automatically enable the latency format when they are selected. They
also record the state of the latency option, and if it was not enabled
when selected, they disable it on reset.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Diffstat (limited to 'kernel/trace/trace_sched_wakeup.c')
-rw-r--r-- | kernel/trace/trace_sched_wakeup.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/trace/trace_sched_wakeup.c b/kernel/trace/trace_sched_wakeup.c index db55f7aaa640..3c5ad6b2ec84 100644 --- a/kernel/trace/trace_sched_wakeup.c +++ b/kernel/trace/trace_sched_wakeup.c | |||
@@ -32,6 +32,8 @@ static raw_spinlock_t wakeup_lock = | |||
32 | 32 | ||
33 | static void __wakeup_reset(struct trace_array *tr); | 33 | static void __wakeup_reset(struct trace_array *tr); |
34 | 34 | ||
35 | static int save_lat_flag; | ||
36 | |||
35 | #ifdef CONFIG_FUNCTION_TRACER | 37 | #ifdef CONFIG_FUNCTION_TRACER |
36 | /* | 38 | /* |
37 | * irqsoff uses its own tracer function to keep the overhead down: | 39 | * irqsoff uses its own tracer function to keep the overhead down: |
@@ -324,6 +326,9 @@ static void stop_wakeup_tracer(struct trace_array *tr) | |||
324 | 326 | ||
325 | static int __wakeup_tracer_init(struct trace_array *tr) | 327 | static int __wakeup_tracer_init(struct trace_array *tr) |
326 | { | 328 | { |
329 | save_lat_flag = trace_flags & TRACE_ITER_LATENCY_FMT; | ||
330 | trace_flags |= TRACE_ITER_LATENCY_FMT; | ||
331 | |||
327 | tracing_max_latency = 0; | 332 | tracing_max_latency = 0; |
328 | wakeup_trace = tr; | 333 | wakeup_trace = tr; |
329 | start_wakeup_tracer(tr); | 334 | start_wakeup_tracer(tr); |
@@ -347,6 +352,9 @@ static void wakeup_tracer_reset(struct trace_array *tr) | |||
347 | stop_wakeup_tracer(tr); | 352 | stop_wakeup_tracer(tr); |
348 | /* make sure we put back any tasks we are tracing */ | 353 | /* make sure we put back any tasks we are tracing */ |
349 | wakeup_reset(tr); | 354 | wakeup_reset(tr); |
355 | |||
356 | if (!save_lat_flag) | ||
357 | trace_flags &= ~TRACE_ITER_LATENCY_FMT; | ||
350 | } | 358 | } |
351 | 359 | ||
352 | static void wakeup_tracer_start(struct trace_array *tr) | 360 | static void wakeup_tracer_start(struct trace_array *tr) |