diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-03-03 10:20:38 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-03-12 11:39:46 -0400 |
commit | d10eb1eb76a86266354ecab6e42c1606e3b8bc4c (patch) | |
tree | e16a15de7df6ff556375effce15d5ece48c809bd /tools/perf/util/session.c | |
parent | b7b61cbebd789a3dbca522e3fdb727fe5c95593f (diff) |
perf ordered_events: Allow tools to specify a deliver method
So that we can simplify the deliver method to pass just:
(ordered_events, ordered_event, sample);
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-j0s4bpxs5qza5tnkvjwom9rw@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index c6dd89f62fc4..e2f318a3f17a 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -16,6 +16,12 @@ | |||
16 | #include "perf_regs.h" | 16 | #include "perf_regs.h" |
17 | #include "asm/bug.h" | 17 | #include "asm/bug.h" |
18 | 18 | ||
19 | static int machines__deliver_event(struct machines *machines, | ||
20 | struct perf_evlist *evlist, | ||
21 | union perf_event *event, | ||
22 | struct perf_sample *sample, | ||
23 | struct perf_tool *tool, u64 file_offset); | ||
24 | |||
19 | static int perf_session__open(struct perf_session *session) | 25 | static int perf_session__open(struct perf_session *session) |
20 | { | 26 | { |
21 | struct perf_data_file *file = session->file; | 27 | struct perf_data_file *file = session->file; |
@@ -86,6 +92,14 @@ static void perf_session__set_comm_exec(struct perf_session *session) | |||
86 | machines__set_comm_exec(&session->machines, comm_exec); | 92 | machines__set_comm_exec(&session->machines, comm_exec); |
87 | } | 93 | } |
88 | 94 | ||
95 | static int ordered_events__deliver_event(struct ordered_events *oe, | ||
96 | struct ordered_event *event, | ||
97 | struct perf_sample *sample) | ||
98 | { | ||
99 | return machines__deliver_event(oe->machines, oe->evlist, event->event, | ||
100 | sample, oe->tool, event->file_offset); | ||
101 | } | ||
102 | |||
89 | struct perf_session *perf_session__new(struct perf_data_file *file, | 103 | struct perf_session *perf_session__new(struct perf_data_file *file, |
90 | bool repipe, struct perf_tool *tool) | 104 | bool repipe, struct perf_tool *tool) |
91 | { | 105 | { |
@@ -125,8 +139,10 @@ struct perf_session *perf_session__new(struct perf_data_file *file, | |||
125 | tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { | 139 | tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { |
126 | dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n"); | 140 | dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n"); |
127 | tool->ordered_events = false; | 141 | tool->ordered_events = false; |
128 | } else | 142 | } else { |
129 | ordered_events__init(&session->ordered_events, &session->machines, session->evlist, tool); | 143 | ordered_events__init(&session->ordered_events, &session->machines, |
144 | session->evlist, tool, ordered_events__deliver_event); | ||
145 | } | ||
130 | 146 | ||
131 | return session; | 147 | return session; |
132 | 148 | ||
@@ -888,11 +904,11 @@ static int | |||
888 | &sample->read.one, machine); | 904 | &sample->read.one, machine); |
889 | } | 905 | } |
890 | 906 | ||
891 | int machines__deliver_event(struct machines *machines, | 907 | static int machines__deliver_event(struct machines *machines, |
892 | struct perf_evlist *evlist, | 908 | struct perf_evlist *evlist, |
893 | union perf_event *event, | 909 | union perf_event *event, |
894 | struct perf_sample *sample, | 910 | struct perf_sample *sample, |
895 | struct perf_tool *tool, u64 file_offset) | 911 | struct perf_tool *tool, u64 file_offset) |
896 | { | 912 | { |
897 | struct perf_evsel *evsel; | 913 | struct perf_evsel *evsel; |
898 | struct machine *machine; | 914 | struct machine *machine; |