lkml.org 
[lkml]   [2009]   [Apr]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/4] tracing/filters: use ring_buffer_discard_commit for discarded events
    From: Steven Rostedt <srostedt@redhat.com>

    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>
    ---
    kernel/trace/trace.c | 9 +++++++--
    kernel/trace/trace.h | 1 +
    kernel/trace/trace_events_stage_3.h | 6 +++---
    3 files changed, 11 insertions(+), 5 deletions(-)

    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index 8c27ac4..d89489c 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -893,13 +893,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
    diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
    index 12316e3..c0d7a12 100644
    --- a/kernel/trace/trace.h
    +++ b/kernel/trace/trace.h
    @@ -491,6 +491,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);
    diff --git a/kernel/trace/trace_events_stage_3.h b/kernel/trace/trace_events_stage_3.h
    index 9d2fa78..d2f34bf 100644
    --- a/kernel/trace/trace_events_stage_3.h
    +++ b/kernel/trace/trace_events_stage_3.h
    @@ -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); \
    \
    } \
    \
    --
    1.6.2.1
    --


    \
     
     \ /
      Last update: 2009-04-02 07:39    [W:0.022 / U:120.380 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site