summaryrefslogtreecommitdiffstats
path: root/tools/perf/util
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util')
-rw-r--r--tools/perf/util/session.c42
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