summaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2012-08-03 22:10:49 +0200
committerSteven Rostedt <rostedt@goodmis.org>2013-03-15 05:34:44 +0100
commit277ba04461c2746cf935353474c0961161951b68 (patch)
treedf2b8eb157c6725e606605f6acf40acbd4f13dd6 /kernel/trace/trace.h
parenttracing: Make syscall events suitable for multiple buffers (diff)
downloadlinux-277ba04461c2746cf935353474c0961161951b68.tar.xz
linux-277ba04461c2746cf935353474c0961161951b68.zip
tracing: Add interface to allow multiple trace buffers
Add the interface ("instances" directory) to add multiple buffers to ftrace. To create a new instance, simply do a mkdir in the instances directory: This will create a directory with the following: # cd instances # mkdir foo # ls foo buffer_size_kb free_buffer trace_clock trace_pipe buffer_total_size_kb set_event trace_marker tracing_enabled events/ trace trace_options tracing_on Currently only events are able to be set, and there isn't a way to delete a buffer when one is created (yet). Note, the i_mutex lock is dropped from the parent "instances" directory during the mkdir operation. As the "instances" directory can not be renamed or deleted (created on boot), I do not see any harm in dropping the lock. The creation of the sub directories is protected by trace_types_lock mutex, which only lets one instance get into the code path at a time. If two tasks try to create or delete directories of the same name, only one will occur and the other will fail with -EEXIST. Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 68cad7a9e089..883fe0b62f0a 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -175,6 +175,7 @@ struct tracer;
struct trace_array {
struct ring_buffer *buffer;
struct list_head list;
+ char *name;
int cpu;
int buffer_disabled;
struct trace_cpu trace_cpu; /* place holder */
@@ -999,6 +1000,7 @@ filter_check_discard(struct ftrace_event_call *call, void *rec,
}
extern void trace_event_enable_cmd_record(bool enable);
+extern int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr);
extern struct mutex event_mutex;
extern struct list_head ftrace_events;