]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - kernel/trace/trace_events.c
Merge tag 'trace-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux...
[karo-tx-linux.git] / kernel / trace / trace_events.c
index 7b16d40bd64d934d2be40e146bf8baa8e074487d..83a4378dc5e00b91eebef35ed5e05898ff72295e 100644 (file)
@@ -188,6 +188,36 @@ int trace_event_raw_init(struct ftrace_event_call *call)
 }
 EXPORT_SYMBOL_GPL(trace_event_raw_init);
 
+void *ftrace_event_buffer_reserve(struct ftrace_event_buffer *fbuffer,
+                                 struct ftrace_event_file *ftrace_file,
+                                 unsigned long len)
+{
+       struct ftrace_event_call *event_call = ftrace_file->event_call;
+
+       local_save_flags(fbuffer->flags);
+       fbuffer->pc = preempt_count();
+       fbuffer->ftrace_file = ftrace_file;
+
+       fbuffer->event =
+               trace_event_buffer_lock_reserve(&fbuffer->buffer, ftrace_file,
+                                               event_call->event.type, len,
+                                               fbuffer->flags, fbuffer->pc);
+       if (!fbuffer->event)
+               return NULL;
+
+       fbuffer->entry = ring_buffer_event_data(fbuffer->event);
+       return fbuffer->entry;
+}
+EXPORT_SYMBOL_GPL(ftrace_event_buffer_reserve);
+
+void ftrace_event_buffer_commit(struct ftrace_event_buffer *fbuffer)
+{
+       event_trigger_unlock_commit(fbuffer->ftrace_file, fbuffer->buffer,
+                                   fbuffer->event, fbuffer->entry,
+                                   fbuffer->flags, fbuffer->pc);
+}
+EXPORT_SYMBOL_GPL(ftrace_event_buffer_commit);
+
 int ftrace_event_reg(struct ftrace_event_call *call,
                     enum trace_reg type, void *data)
 {