tracing: add interface to write into current tracer buffer
authorSteven Rostedt <srostedt@redhat.com>
Sat, 28 Feb 2009 00:38:04 +0000 (19:38 -0500)
committerSteven Rostedt <srostedt@redhat.com>
Sat, 28 Feb 2009 08:06:44 +0000 (03:06 -0500)
Right now all tracers must manage their own trace buffers. This was
to enforce tracers to be independent in case we finally decide to
allow each tracer to have their own trace buffer.

But now we are adding event tracing that writes to the current tracer's
buffer. This adds an interface to allow events to write to the current
tracer buffer without having to manage its own. Since event tracing
has no "tracer", and is just a way to hook into any other tracer.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
kernel/trace/trace.c
kernel/trace/trace.h

index 9c5987aca74bc2ca899e5c9b8cc9f8b774fe56a4..c5e39cd7310db2a371a6ff1c872b4bf473750b12 100644 (file)
@@ -846,6 +846,20 @@ void trace_buffer_unlock_commit(struct trace_array *tr,
        trace_wake_up();
 }
 
+struct ring_buffer_event *
+trace_current_buffer_lock_reserve(unsigned char type, unsigned long len,
+                                 unsigned long flags, int pc)
+{
+       return trace_buffer_lock_reserve(&global_trace,
+                                        type, len, flags, pc);
+}
+
+void trace_current_buffer_unlock_commit(struct ring_buffer_event *event,
+                                       unsigned long flags, int pc)
+{
+       return trace_buffer_unlock_commit(&global_trace, event, flags, pc);
+}
+
 void
 trace_function(struct trace_array *tr,
               unsigned long ip, unsigned long parent_ip, unsigned long flags,
index 632191770aac48a274146c8d03999b6ab9dcd940..adf161f6dd11615977c1d99961053b59d884b668 100644 (file)
@@ -442,6 +442,12 @@ void trace_buffer_unlock_commit(struct trace_array *tr,
                                struct ring_buffer_event *event,
                                unsigned long flags, int pc);
 
+struct ring_buffer_event *
+trace_current_buffer_lock_reserve(unsigned char type, unsigned long len,
+                                 unsigned long flags, int pc);
+void trace_current_buffer_unlock_commit(struct ring_buffer_event *event,
+                                       unsigned long flags, int pc);
+
 struct trace_entry *tracing_get_trace_entry(struct trace_array *tr,
                                                struct trace_array_cpu *data);