forked from Minki/linux
tracing/osnoise: Split workload start from the tracer start
In preparation from supporting multiple trace instances, create workload start/stop specific functions. No functional change. Link: https://lkml.kernel.org/r/74b090971e9acdd13625be1c28ef3270d2275e77.1635702894.git.bristot@kernel.org Cc: Ingo Molnar <mingo@redhat.com> Cc: Tom Zanussi <zanussi@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Clark Williams <williams@redhat.com> Cc: John Kacur <jkacur@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Cc: Daniel Bristot de Oliveira <bristot@kernel.org> Cc: linux-rt-users@vger.kernel.org Cc: linux-trace-devel@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
c3b6343c0d
commit
15ca4bdb03
@ -1546,7 +1546,7 @@ static int start_kthread(unsigned int cpu)
|
||||
* This starts the kernel thread that will look for osnoise on many
|
||||
* cpus.
|
||||
*/
|
||||
static int start_per_cpu_kthreads(struct trace_array *tr)
|
||||
static int start_per_cpu_kthreads(void)
|
||||
{
|
||||
struct cpumask *current_mask = &save_cpumask;
|
||||
int retval = 0;
|
||||
@ -1678,8 +1678,8 @@ out_unlock:
|
||||
return count;
|
||||
}
|
||||
|
||||
static void osnoise_tracer_start(struct trace_array *tr);
|
||||
static void osnoise_tracer_stop(struct trace_array *tr);
|
||||
static int osnoise_workload_start(void);
|
||||
static void osnoise_workload_stop(void);
|
||||
|
||||
/*
|
||||
* osnoise_cpus_write - Write function for "cpus" entry
|
||||
@ -1701,7 +1701,6 @@ static ssize_t
|
||||
osnoise_cpus_write(struct file *filp, const char __user *ubuf, size_t count,
|
||||
loff_t *ppos)
|
||||
{
|
||||
struct trace_array *tr = osnoise_trace;
|
||||
cpumask_var_t osnoise_cpumask_new;
|
||||
int running, err;
|
||||
char buf[256];
|
||||
@ -1726,7 +1725,7 @@ osnoise_cpus_write(struct file *filp, const char __user *ubuf, size_t count,
|
||||
mutex_lock(&trace_types_lock);
|
||||
running = osnoise_busy;
|
||||
if (running)
|
||||
osnoise_tracer_stop(tr);
|
||||
osnoise_workload_stop();
|
||||
|
||||
mutex_lock(&interface_lock);
|
||||
/*
|
||||
@ -1740,7 +1739,7 @@ osnoise_cpus_write(struct file *filp, const char __user *ubuf, size_t count,
|
||||
mutex_unlock(&interface_lock);
|
||||
|
||||
if (running)
|
||||
osnoise_tracer_start(tr);
|
||||
osnoise_workload_start();
|
||||
mutex_unlock(&trace_types_lock);
|
||||
|
||||
free_cpumask_var(osnoise_cpumask_new);
|
||||
@ -1921,7 +1920,10 @@ out_unhook_irq:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int __osnoise_tracer_start(struct trace_array *tr)
|
||||
/*
|
||||
* osnoise_workload_start - start the workload and hook to events
|
||||
*/
|
||||
static int osnoise_workload_start(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@ -1938,7 +1940,7 @@ static int __osnoise_tracer_start(struct trace_array *tr)
|
||||
barrier();
|
||||
trace_osnoise_callback_enabled = true;
|
||||
|
||||
retval = start_per_cpu_kthreads(tr);
|
||||
retval = start_per_cpu_kthreads();
|
||||
if (retval) {
|
||||
unhook_irq_events();
|
||||
return retval;
|
||||
@ -1949,20 +1951,10 @@ static int __osnoise_tracer_start(struct trace_array *tr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void osnoise_tracer_start(struct trace_array *tr)
|
||||
{
|
||||
int retval;
|
||||
|
||||
if (osnoise_busy)
|
||||
return;
|
||||
|
||||
retval = __osnoise_tracer_start(tr);
|
||||
if (retval)
|
||||
pr_err(BANNER "Error starting osnoise tracer\n");
|
||||
|
||||
}
|
||||
|
||||
static void osnoise_tracer_stop(struct trace_array *tr)
|
||||
/*
|
||||
* osnoise_workload_stop - stop the workload and unhook the events
|
||||
*/
|
||||
static void osnoise_workload_stop(void)
|
||||
{
|
||||
if (!osnoise_busy)
|
||||
return;
|
||||
@ -1983,6 +1975,27 @@ static void osnoise_tracer_stop(struct trace_array *tr)
|
||||
osnoise_busy = false;
|
||||
}
|
||||
|
||||
static void osnoise_tracer_start(struct trace_array *tr)
|
||||
{
|
||||
int retval;
|
||||
|
||||
if (osnoise_busy)
|
||||
return;
|
||||
|
||||
retval = osnoise_workload_start();
|
||||
if (retval)
|
||||
pr_err(BANNER "Error starting osnoise tracer\n");
|
||||
|
||||
}
|
||||
|
||||
static void osnoise_tracer_stop(struct trace_array *tr)
|
||||
{
|
||||
if (!osnoise_busy)
|
||||
return;
|
||||
|
||||
osnoise_workload_stop();
|
||||
}
|
||||
|
||||
static int osnoise_tracer_init(struct trace_array *tr)
|
||||
{
|
||||
|
||||
@ -2023,7 +2036,7 @@ static void timerlat_tracer_start(struct trace_array *tr)
|
||||
|
||||
osnoise_data.timerlat_tracer = 1;
|
||||
|
||||
retval = __osnoise_tracer_start(tr);
|
||||
retval = osnoise_workload_start();
|
||||
if (retval)
|
||||
goto out_err;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user