tracing: Add disable_on_free option
authorSteven Rostedt <srostedt@redhat.com>
Wed, 15 Jun 2011 02:44:07 +0000 (22:44 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 15 Jun 2011 02:48:45 +0000 (22:48 -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 9c557ae6a21eb4df72aa8549bbe0ed9b539415c8..42fdf3adff319b4cb5e2ec2dc9e8dddb792d8cbf 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 229f8591f61db792780fb7579a1061458a663b4c..742f545ae1858a0ce50166a1c4f5da67c07ffd87 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,
 };
 
 /*