Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fec6ddc authored by Steven Rostedt's avatar Steven Rostedt
Browse files

tracing: make sched_switch stop/start light weight



The stopping and starting of a tracer should be light weight and
be able to be called in all contexts. The sched_switch grabbed
mutexes in the start/stop functions. This patch changes it to a
simple variable, on/off.

Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
parent 97e7e4f3
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ static struct trace_array *ctx_trace;
static int __read_mostly	tracer_enabled;
static int			sched_ref;
static DEFINE_MUTEX(sched_register_mutex);
static int			sched_stopped;

static void
probe_sched_switch(struct rq *__rq, struct task_struct *prev,
@@ -28,7 +29,7 @@ probe_sched_switch(struct rq *__rq, struct task_struct *prev,
	int cpu;
	int pc;

	if (!sched_ref)
	if (!sched_ref || sched_stopped)
		return;

	tracing_record_cmdline(prev);
@@ -193,6 +194,7 @@ static void stop_sched_trace(struct trace_array *tr)
static int sched_switch_trace_init(struct trace_array *tr)
{
	ctx_trace = tr;
	tracing_reset_online_cpus(tr);
	tracing_start_sched_switch_record();
	return 0;
}
@@ -205,13 +207,12 @@ static void sched_switch_trace_reset(struct trace_array *tr)

static void sched_switch_trace_start(struct trace_array *tr)
{
	tracing_reset_online_cpus(tr);
	tracing_start_sched_switch();
	sched_stopped = 0;
}

static void sched_switch_trace_stop(struct trace_array *tr)
{
	tracing_stop_sched_switch();
	sched_stopped = 1;
}

static struct tracer sched_switch_trace __read_mostly =