lkml.org 
[lkml]   [2010]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/11] perf session: Simplify termination checks
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    No need to check twice.

    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <20101130163820.152886642@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/session.c | 20 +++++++++++---------
    1 files changed, 11 insertions(+), 9 deletions(-)

    diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
    index 3c140da..9c806ab 100644
    --- a/tools/perf/util/session.c
    +++ b/tools/perf/util/session.c
    @@ -738,7 +738,7 @@ int __perf_session__process_events(struct perf_session *session,
    u64 data_offset, u64 data_size,
    u64 file_size, struct perf_event_ops *ops)
    {
    - u64 head, page_offset, file_offset;
    + u64 head, page_offset, file_offset, file_pos;
    int err, mmap_prot, mmap_flags;
    struct ui_progress *progress;
    size_t page_size;
    @@ -758,6 +758,9 @@ int __perf_session__process_events(struct perf_session *session,
    file_offset = page_offset;
    head = data_offset - page_offset;

    + if (data_offset + data_size < file_size)
    + file_size = data_offset + data_size;
    +
    mmap_prot = PROT_READ;
    mmap_flags = MAP_SHARED;

    @@ -773,6 +776,7 @@ remap:
    err = -errno;
    goto out_err;
    }
    + file_pos = file_offset + head;
    ui_progress__update(progress, file_offset);

    more:
    @@ -799,10 +803,10 @@ more:
    size = event->header.size;

    dump_printf("\n%#Lx [%#x]: event: %d\n",
    - file_offset + head, event->header.size, event->header.type);
    + file_pos, event->header.size, event->header.type);

    - if (size == 0 || perf_session__process_event(session, event, ops,
    - file_offset + head) < 0) {
    + if (size == 0 ||
    + perf_session__process_event(session, event, ops, file_pos) < 0) {
    dump_printf("%#Lx [%#x]: skipping unknown header type: %d\n",
    file_offset + head, event->header.size,
    event->header.type);
    @@ -817,13 +821,11 @@ more:
    }

    head += size;
    + file_pos += size;

    - if (file_offset + head >= data_offset + data_size)
    - goto done;
    -
    - if (file_offset + head < file_size)
    + if (file_pos < file_size)
    goto more;
    -done:
    +
    err = 0;
    /* do the final flush for ordered samples */
    session->ordered_samples.next_flush = ULLONG_MAX;
    --
    1.6.2.5


    \
     
     \ /
      Last update: 2010-11-30 21:15    [W:0.022 / U:176.624 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site