diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-12-07 12:49:01 +0000 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-12-09 12:15:43 -0200 |
commit | ba74f0640d963ccc914ac533cb0ba133ee07bcf2 (patch) | |
tree | 1bb018963e13c5cc84c35c42e9cc18543ea43854 /tools/perf | |
parent | 3dfc2c0aee789843d18f6e4675658e6879465a56 (diff) | |
download | linux-stable-ba74f0640d963ccc914ac533cb0ba133ee07bcf2.tar.gz linux-stable-ba74f0640d963ccc914ac533cb0ba133ee07bcf2.tar.bz2 linux-stable-ba74f0640d963ccc914ac533cb0ba133ee07bcf2.zip |
perf session: Split out user event processing
Simplify further.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ian Munsie <imunsie@au1.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <20101207124551.110956235@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/session.c | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index a765b274390e..69760cd4cc44 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -748,24 +748,10 @@ static int perf_session__preprocess_sample(struct perf_session *session, return 0; } -static int perf_session__process_event(struct perf_session *session, - event_t *event, - struct perf_event_ops *ops, - u64 file_offset) +static int perf_session__process_user_event(struct perf_session *session, event_t *event, + struct perf_event_ops *ops, u64 file_offset) { - struct sample_data sample; - int ret; - - if (session->header.needs_swap && event__swap_ops[event->header.type]) - event__swap_ops[event->header.type](event); - - if (event->header.type >= PERF_RECORD_HEADER_MAX) - return -EINVAL; - - hists__inc_nr_events(&session->hists, event->header.type); - - if (event->header.type >= PERF_RECORD_USER_TYPE_START) - dump_event(session, event, file_offset, NULL); + dump_event(session, event, file_offset, NULL); /* These events are processed right away */ switch (event->header.type) { @@ -782,8 +768,28 @@ static int perf_session__process_event(struct perf_session *session, case PERF_RECORD_FINISHED_ROUND: return ops->finished_round(event, session, ops); default: - break; + return -EINVAL; } +} + +static int perf_session__process_event(struct perf_session *session, + event_t *event, + struct perf_event_ops *ops, + u64 file_offset) +{ + struct sample_data sample; + int ret; + + if (session->header.needs_swap && event__swap_ops[event->header.type]) + event__swap_ops[event->header.type](event); + + if (event->header.type >= PERF_RECORD_HEADER_MAX) + return -EINVAL; + + hists__inc_nr_events(&session->hists, event->header.type); + + if (event->header.type >= PERF_RECORD_USER_TYPE_START) + return perf_session__process_user_event(session, event, ops, file_offset); /* * For all kernel events we get the sample data |