]> err.no Git - linux-2.6/commitdiff
ftrace: disable tracing when current_tracer is set to "none"
authorAnkita Garg <ankita@in.ibm.com>
Mon, 9 Jun 2008 08:40:25 +0000 (14:10 +0530)
committerIngo Molnar <mingo@elte.hu>
Tue, 10 Jun 2008 12:52:30 +0000 (14:52 +0200)
Found that inspite of setting the current_tracer to "none", trace from
the previous trace type continued to be collected. The patch below fixes
this and causes the trace to be disabled when the "none" type is
selected.

Compile and boot tested the patch for functionality.

Signed-off-by: Ankita Garg <ankita@in.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace.c

index 12f5e817380e06bb42ade5042d4b48be4fbddd55..dde6f0ace6dc7a9be77e16783ac3bbf9e72d21ff 100644 (file)
@@ -43,11 +43,6 @@ static cpumask_t __read_mostly               tracing_buffer_mask;
 #define for_each_tracing_cpu(cpu)      \
        for_each_cpu_mask(cpu, tracing_buffer_mask)
 
-/* dummy trace to disable tracing */
-static struct tracer no_tracer __read_mostly = {
-       .name           = "none",
-};
-
 static int trace_alloc_page(void);
 static int trace_free_page(void);
 
@@ -135,6 +130,23 @@ static DECLARE_WAIT_QUEUE_HEAD(trace_wait);
 /* trace_flags holds iter_ctrl options */
 unsigned long trace_flags = TRACE_ITER_PRINT_PARENT;
 
+static notrace void no_trace_init(struct trace_array *tr)
+{
+       int cpu;
+
+       if(tr->ctrl)
+               for_each_online_cpu(cpu)
+                       tracing_reset(tr->data[cpu]);
+       tracer_enabled = 0;
+}
+
+/* dummy trace to disable tracing */
+static struct tracer no_tracer __read_mostly = {
+       .name           = "none",
+       .init           = no_trace_init
+};
+
+
 /**
  * trace_wake_up - wake up tasks waiting for trace input
  *