diff options
author | Steven Rostedt (Red Hat) <srostedt@redhat.com> | 2013-03-05 21:23:55 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2013-03-15 00:35:49 -0400 |
commit | ce9bae55972b228cf7bac34350c4d2caf8ea0d0b (patch) | |
tree | 637ef0eb957989c40ae4749c090764cff640014d | |
parent | 737223fbca3b1c91feb947c7f571b35749b743b6 (diff) |
tracing: Add snapshot feature to instances
Add the "snapshot" file to the the multi-buffer instances.
cd /sys/kernel/debug/tracing/instances
mkdir foo
ls foo
buffer_size_kb buffer_total_size_kb events free_buffer set_event
snapshot trace trace_clock trace_marker trace_options trace_pipe
tracing_on
cat foo/snapshot
# tracer: nop
#
#
# * Snapshot is freed *
#
# Snapshot commands:
# echo 0 > snapshot : Clears and frees snapshot buffer
# echo 1 > snapshot : Allocates snapshot buffer, if not already allocated.
# Takes a snapshot of the main buffer.
# echo 2 > snapshot : Clears snapshot buffer (but does not allocate)
# (Doesn't have to be '2' works with any number that
# is not a '0' or '1')
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel/trace/trace.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 57895d476509..17671bc9a4b1 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -4302,9 +4302,9 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt, | |||
4302 | local_irq_disable(); | 4302 | local_irq_disable(); |
4303 | /* Now, we're going to swap */ | 4303 | /* Now, we're going to swap */ |
4304 | if (iter->cpu_file == RING_BUFFER_ALL_CPUS) | 4304 | if (iter->cpu_file == RING_BUFFER_ALL_CPUS) |
4305 | update_max_tr(&global_trace, current, smp_processor_id()); | 4305 | update_max_tr(tr, current, smp_processor_id()); |
4306 | else | 4306 | else |
4307 | update_max_tr_single(&global_trace, current, iter->cpu_file); | 4307 | update_max_tr_single(tr, current, iter->cpu_file); |
4308 | local_irq_enable(); | 4308 | local_irq_enable(); |
4309 | break; | 4309 | break; |
4310 | default: | 4310 | default: |
@@ -5533,6 +5533,11 @@ init_tracer_debugfs(struct trace_array *tr, struct dentry *d_tracer) | |||
5533 | 5533 | ||
5534 | trace_create_file("tracing_on", 0644, d_tracer, | 5534 | trace_create_file("tracing_on", 0644, d_tracer, |
5535 | tr, &rb_simple_fops); | 5535 | tr, &rb_simple_fops); |
5536 | |||
5537 | #ifdef CONFIG_TRACER_SNAPSHOT | ||
5538 | trace_create_file("snapshot", 0644, d_tracer, | ||
5539 | (void *)&tr->trace_cpu, &snapshot_fops); | ||
5540 | #endif | ||
5536 | } | 5541 | } |
5537 | 5542 | ||
5538 | static __init int tracer_init_debugfs(void) | 5543 | static __init int tracer_init_debugfs(void) |
@@ -5574,11 +5579,6 @@ static __init int tracer_init_debugfs(void) | |||
5574 | &ftrace_update_tot_cnt, &tracing_dyn_info_fops); | 5579 | &ftrace_update_tot_cnt, &tracing_dyn_info_fops); |
5575 | #endif | 5580 | #endif |
5576 | 5581 | ||
5577 | #ifdef CONFIG_TRACER_SNAPSHOT | ||
5578 | trace_create_file("snapshot", 0644, d_tracer, | ||
5579 | (void *)&global_trace.trace_cpu, &snapshot_fops); | ||
5580 | #endif | ||
5581 | |||
5582 | create_trace_instances(d_tracer); | 5582 | create_trace_instances(d_tracer); |
5583 | 5583 | ||
5584 | create_trace_options_dir(&global_trace); | 5584 | create_trace_options_dir(&global_trace); |