]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tracing/osnoise: Split workload start from the tracer start
authorDaniel Bristot de Oliveira <bristot@kernel.org>
Sun, 31 Oct 2021 18:04:58 +0000 (19:04 +0100)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Mon, 1 Nov 2021 22:10:00 +0000 (18:10 -0400)
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>
kernel/trace/trace_osnoise.c

index 7d6be609d3dd23f9b8fd8599b45698f9f8ba4ea3..5279a4990493cd9947c496d5437ced984f4c0def 100644 (file)
@@ -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;