Skip to content

Commit

Permalink
tracing: have latency tracers set the latency format
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Steven Rostedt committed Mar 5, 2009
1 parent 27d48be commit e9d25fe
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
8 changes: 8 additions & 0 deletions kernel/trace/trace_irqsoff.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ enum {

static int trace_type __read_mostly;

static int save_lat_flag;

#ifdef CONFIG_PREEMPT_TRACER
static inline int
preempt_trace(void)
Expand Down Expand Up @@ -370,6 +372,9 @@ static void stop_irqsoff_tracer(struct trace_array *tr)

static void __irqsoff_tracer_init(struct trace_array *tr)
{
save_lat_flag = trace_flags & TRACE_ITER_LATENCY_FMT;
trace_flags |= TRACE_ITER_LATENCY_FMT;

tracing_max_latency = 0;
irqsoff_trace = tr;
/* make sure that the tracer is visible */
Expand All @@ -380,6 +385,9 @@ static void __irqsoff_tracer_init(struct trace_array *tr)
static void irqsoff_tracer_reset(struct trace_array *tr)
{
stop_irqsoff_tracer(tr);

if (!save_lat_flag)
trace_flags &= ~TRACE_ITER_LATENCY_FMT;
}

static void irqsoff_tracer_start(struct trace_array *tr)
Expand Down
8 changes: 8 additions & 0 deletions kernel/trace/trace_sched_wakeup.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ static raw_spinlock_t wakeup_lock =

static void __wakeup_reset(struct trace_array *tr);

static int save_lat_flag;

#ifdef CONFIG_FUNCTION_TRACER
/*
* irqsoff uses its own tracer function to keep the overhead down:
Expand Down Expand Up @@ -324,6 +326,9 @@ static void stop_wakeup_tracer(struct trace_array *tr)

static int __wakeup_tracer_init(struct trace_array *tr)
{
save_lat_flag = trace_flags & TRACE_ITER_LATENCY_FMT;
trace_flags |= TRACE_ITER_LATENCY_FMT;

tracing_max_latency = 0;
wakeup_trace = tr;
start_wakeup_tracer(tr);
Expand All @@ -347,6 +352,9 @@ static void wakeup_tracer_reset(struct trace_array *tr)
stop_wakeup_tracer(tr);
/* make sure we put back any tasks we are tracing */
wakeup_reset(tr);

if (!save_lat_flag)
trace_flags &= ~TRACE_ITER_LATENCY_FMT;
}

static void wakeup_tracer_start(struct trace_array *tr)
Expand Down

0 comments on commit e9d25fe

Please sign in to comment.