Skip to content

Commit

Permalink
tracing: Allow wakeup tracers to be used by instances
Browse files Browse the repository at this point in the history
The wakeup and wakeup_rt tracers can now be used by instances.
But they may only be used by one instance at a time (including the
top level directory). This allows multiple tracers to run while
the wakeup tracer is running simultaneously.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt (Red Hat) committed Apr 21, 2014
1 parent 0b9b12c commit 65daaca
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions kernel/trace/trace_sched_wakeup.c
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,8 @@ static void stop_wakeup_tracer(struct trace_array *tr)
unregister_trace_sched_migrate_task(probe_wakeup_migrate_task, NULL);
}

static bool wakeup_busy;

static int __wakeup_tracer_init(struct trace_array *tr)
{
save_flags = trace_flags;
Expand All @@ -613,25 +615,36 @@ static int __wakeup_tracer_init(struct trace_array *tr)
wakeup_trace = tr;
ftrace_init_array_ops(tr, wakeup_tracer_call);
start_wakeup_tracer(tr);

wakeup_busy = true;
return 0;
}

static int wakeup_tracer_init(struct trace_array *tr)
{
if (wakeup_busy)
return -EBUSY;

wakeup_dl = 0;
wakeup_rt = 0;
return __wakeup_tracer_init(tr);
}

static int wakeup_rt_tracer_init(struct trace_array *tr)
{
if (wakeup_busy)
return -EBUSY;

wakeup_dl = 0;
wakeup_rt = 1;
return __wakeup_tracer_init(tr);
}

static int wakeup_dl_tracer_init(struct trace_array *tr)
{
if (wakeup_busy)
return -EBUSY;

wakeup_dl = 1;
wakeup_rt = 0;
return __wakeup_tracer_init(tr);
Expand All @@ -649,6 +662,7 @@ static void wakeup_tracer_reset(struct trace_array *tr)
set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, lat_flag);
set_tracer_flag(tr, TRACE_ITER_OVERWRITE, overwrite_flag);
ftrace_reset_array_ops(tr);
wakeup_busy = false;
}

static void wakeup_tracer_start(struct trace_array *tr)
Expand Down Expand Up @@ -680,6 +694,7 @@ static struct tracer wakeup_tracer __read_mostly =
#endif
.open = wakeup_trace_open,
.close = wakeup_trace_close,
.allow_instances = true,
.use_max_tr = true,
};

Expand All @@ -702,6 +717,7 @@ static struct tracer wakeup_rt_tracer __read_mostly =
#endif
.open = wakeup_trace_open,
.close = wakeup_trace_close,
.allow_instances = true,
.use_max_tr = true,
};

Expand Down

0 comments on commit 65daaca

Please sign in to comment.