]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
tracing/filters: use ring_buffer_discard_commit for discarded events
authorSteven Rostedt <srostedt@redhat.com>
Thu, 2 Apr 2009 05:16:59 +0000 (01:16 -0400)
committerIngo Molnar <mingo@elte.hu>
Mon, 13 Apr 2009 22:00:54 +0000 (00:00 +0200)
The ring_buffer_discard_commit makes better usage of the ring_buffer
when an event has been discarded. It tries to remove it completely if
possible.

This patch converts the trace event filtering to use
ring_buffer_discard_commit instead of the ring_buffer_event_discard.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_events_stage_3.h

index c209d214169c1c7c7d47e7af9244352d95139463..d880ab2772ce7351facbbdf89729d837ce0f1d08 100644 (file)
@@ -884,13 +884,18 @@ trace_current_buffer_lock_reserve(unsigned char type, unsigned long len,
 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, 1);
+       __trace_buffer_unlock_commit(&global_trace, event, flags, pc, 1);
 }
 
 void trace_nowake_buffer_unlock_commit(struct ring_buffer_event *event,
                                        unsigned long flags, int pc)
 {
-       return __trace_buffer_unlock_commit(&global_trace, event, flags, pc, 0);
+       __trace_buffer_unlock_commit(&global_trace, event, flags, pc, 0);
+}
+
+void trace_current_buffer_discard_commit(struct ring_buffer_event *event)
+{
+       ring_buffer_discard_commit(global_trace.buffer, event);
 }
 
 void
index 3cf856fa597bbb6223bb0dffbcae6d50f68e610a..dfefffd7ae39f1be6f32a0b32d4da3ad273ca553 100644 (file)
@@ -497,6 +497,7 @@ void trace_current_buffer_unlock_commit(struct ring_buffer_event *event,
                                        unsigned long flags, int pc);
 void trace_nowake_buffer_unlock_commit(struct ring_buffer_event *event,
                                        unsigned long flags, int pc);
+void trace_current_buffer_discard_commit(struct ring_buffer_event *event);
 
 struct trace_entry *tracing_get_trace_entry(struct trace_array *tr,
                                                struct trace_array_cpu *data);
index 9d2fa78ceccae5973c83c37bdc1e363b214d0d3b..d2f34bf30e59727f181f8689ed86bc1e22bf794c 100644 (file)
@@ -223,9 +223,9 @@ static void ftrace_raw_event_##call(proto)                          \
        assign;                                                         \
                                                                        \
        if (call->preds && !filter_match_preds(call, entry))            \
-               ring_buffer_event_discard(event);                       \
-                                                                       \
-       trace_nowake_buffer_unlock_commit(event, irq_flags, pc);        \
+               trace_current_buffer_discard_commit(event);             \
+       else                                                            \
+               trace_nowake_buffer_unlock_commit(event, irq_flags, pc); \
                                                                        \
 }                                                                      \
                                                                        \