tracing: Add disable_on_free option
Steven Rostedt [Wed, 15 Jun 2011 02:44:07 +0000 (22:44 -0400)]
Add a trace option to disable tracing on free. When this option is
set, a write into the free_buffer file will not only shrink the
ring buffer down to zero, but it will also disable tracing.

Cc: Vaibhav Nagarnaik <vnagarnaik@google.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

kernel/trace/trace.c
kernel/trace/trace.h

index 9c557ae..42fdf3a 100644 (file)
@@ -425,6 +425,7 @@ static const char *trace_options[] = {
        "graph-time",
        "record-cmd",
        "overwrite",
+       "disable_on_free",
        NULL
 };
 
@@ -3518,8 +3519,9 @@ tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
 static int
 tracing_free_buffer_release(struct inode *inode, struct file *filp)
 {
-       /* disable tracing */
-       tracing_off();
+       /* disable tracing ? */
+       if (trace_flags & TRACE_ITER_STOP_ON_FREE)
+               tracing_off();
        /* resize the ring buffer to 0 */
        tracing_resize_ring_buffer(0);
 
index 229f859..742f545 100644 (file)
@@ -609,6 +609,7 @@ enum trace_iterator_flags {
        TRACE_ITER_GRAPH_TIME           = 0x80000,
        TRACE_ITER_RECORD_CMD           = 0x100000,
        TRACE_ITER_OVERWRITE            = 0x200000,
+       TRACE_ITER_STOP_ON_FREE         = 0x400000,
 };
 
 /*