aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2015-03-03 09:58:45 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-03-11 09:17:09 -0400
commitb7b61cbebd789a3dbca522e3fdb727fe5c95593f (patch)
treeea6757b8b1d85b1562ce10217912c5827a4d2b23 /tools
parentfa713a4eb9cebe5dec71b1bd11429603e17d841d (diff)
perf ordered_events: Shorten function signatures
By keeping pointers to machines, evlist and tool in ordered_events. 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-0c6huyaf59mqtm2ek9pmposl@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/builtin-annotate.c2
-rw-r--r--tools/perf/builtin-buildid-list.c2
-rw-r--r--tools/perf/builtin-diff.c2
-rw-r--r--tools/perf/builtin-inject.c6
-rw-r--r--tools/perf/builtin-kmem.c2
-rw-r--r--tools/perf/builtin-kvm.c6
-rw-r--r--tools/perf/builtin-lock.c2
-rw-r--r--tools/perf/builtin-mem.c2
-rw-r--r--tools/perf/builtin-record.c4
-rw-r--r--tools/perf/builtin-report.c2
-rw-r--r--tools/perf/builtin-sched.c2
-rw-r--r--tools/perf/builtin-script.c2
-rw-r--r--tools/perf/builtin-timechart.c2
-rw-r--r--tools/perf/builtin-trace.c2
-rw-r--r--tools/perf/util/data-convert-bt.c4
-rw-r--r--tools/perf/util/ordered-events.c23
-rw-r--r--tools/perf/util/ordered-events.h10
-rw-r--r--tools/perf/util/session.c65
-rw-r--r--tools/perf/util/session.h11
19 files changed, 68 insertions, 83 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 747f86103599..71bf7451c0ca 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -208,7 +208,7 @@ static int __cmd_annotate(struct perf_annotate *ann)
208 goto out; 208 goto out;
209 } 209 }
210 210
211 ret = perf_session__process_events(session, &ann->tool); 211 ret = perf_session__process_events(session);
212 if (ret) 212 if (ret)
213 goto out; 213 goto out;
214 214
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c
index ed3873b3e238..feb420f74c2d 100644
--- a/tools/perf/builtin-buildid-list.c
+++ b/tools/perf/builtin-buildid-list.c
@@ -74,7 +74,7 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
74 * the record stream. Buildids are stored as RECORD_HEADER_BUILD_ID 74 * the record stream. Buildids are stored as RECORD_HEADER_BUILD_ID
75 */ 75 */
76 if (with_hits || perf_data_file__is_pipe(&file)) 76 if (with_hits || perf_data_file__is_pipe(&file))
77 perf_session__process_events(session, &build_id__mark_dso_hit_ops); 77 perf_session__process_events(session);
78 78
79 perf_session__fprintf_dsos_buildid(session, stdout, dso__skip_buildid, with_hits); 79 perf_session__fprintf_dsos_buildid(session, stdout, dso__skip_buildid, with_hits);
80 perf_session__delete(session); 80 perf_session__delete(session);
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 74aada554b12..f800fc95f5d7 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -747,7 +747,7 @@ static int __cmd_diff(void)
747 goto out_delete; 747 goto out_delete;
748 } 748 }
749 749
750 ret = perf_session__process_events(d->session, &tool); 750 ret = perf_session__process_events(d->session);
751 if (ret) { 751 if (ret) {
752 pr_err("Failed to process %s\n", d->file.path); 752 pr_err("Failed to process %s\n", d->file.path);
753 goto out_delete; 753 goto out_delete;
diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index a13641e066f5..2563f07ec0e5 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -359,8 +359,6 @@ static int __cmd_inject(struct perf_inject *inject)
359 } else if (inject->sched_stat) { 359 } else if (inject->sched_stat) {
360 struct perf_evsel *evsel; 360 struct perf_evsel *evsel;
361 361
362 inject->tool.ordered_events = true;
363
364 evlist__for_each(session->evlist, evsel) { 362 evlist__for_each(session->evlist, evsel) {
365 const char *name = perf_evsel__name(evsel); 363 const char *name = perf_evsel__name(evsel);
366 364
@@ -379,7 +377,7 @@ static int __cmd_inject(struct perf_inject *inject)
379 if (!file_out->is_pipe) 377 if (!file_out->is_pipe)
380 lseek(fd, session->header.data_offset, SEEK_SET); 378 lseek(fd, session->header.data_offset, SEEK_SET);
381 379
382 ret = perf_session__process_events(session, &inject->tool); 380 ret = perf_session__process_events(session);
383 381
384 if (!file_out->is_pipe) { 382 if (!file_out->is_pipe) {
385 if (inject->build_ids) 383 if (inject->build_ids)
@@ -458,6 +456,8 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
458 return -1; 456 return -1;
459 } 457 }
460 458
459 inject.tool.ordered_events = inject.sched_stat;
460
461 file.path = inject.input_name; 461 file.path = inject.input_name;
462 inject.session = perf_session__new(&file, true, &inject.tool); 462 inject.session = perf_session__new(&file, true, &inject.tool);
463 if (inject.session == NULL) 463 if (inject.session == NULL)
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
index f295141025bc..62f165a9fa40 100644
--- a/tools/perf/builtin-kmem.c
+++ b/tools/perf/builtin-kmem.c
@@ -426,7 +426,7 @@ static int __cmd_kmem(struct perf_session *session)
426 } 426 }
427 427
428 setup_pager(); 428 setup_pager();
429 err = perf_session__process_events(session, &perf_kmem); 429 err = perf_session__process_events(session);
430 if (err != 0) 430 if (err != 0)
431 goto out; 431 goto out;
432 sort_result(); 432 sort_result();
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 0894a817f67e..802b8f53fa9a 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -730,9 +730,9 @@ static s64 perf_kvm__mmap_read_idx(struct perf_kvm_stat *kvm, int idx,
730 return -1; 730 return -1;
731 } 731 }
732 732
733 err = perf_session_queue_event(kvm->session, event, &kvm->tool, &sample, 0); 733 err = perf_session__queue_event(kvm->session, event, &sample, 0);
734 /* 734 /*
735 * FIXME: Here we can't consume the event, as perf_session_queue_event will 735 * FIXME: Here we can't consume the event, as perf_session__queue_event will
736 * point to it, and it'll get possibly overwritten by the kernel. 736 * point to it, and it'll get possibly overwritten by the kernel.
737 */ 737 */
738 perf_evlist__mmap_consume(kvm->evlist, idx); 738 perf_evlist__mmap_consume(kvm->evlist, idx);
@@ -1066,7 +1066,7 @@ static int read_events(struct perf_kvm_stat *kvm)
1066 if (ret < 0) 1066 if (ret < 0)
1067 return ret; 1067 return ret;
1068 1068
1069 return perf_session__process_events(kvm->session, &kvm->tool); 1069 return perf_session__process_events(kvm->session);
1070} 1070}
1071 1071
1072static int parse_target_str(struct perf_kvm_stat *kvm) 1072static int parse_target_str(struct perf_kvm_stat *kvm)
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index e7ec71589da6..7893a9bba2a7 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -878,7 +878,7 @@ static int __cmd_report(bool display_info)
878 if (select_key()) 878 if (select_key())
879 goto out_delete; 879 goto out_delete;
880 880
881 err = perf_session__process_events(session, &eops); 881 err = perf_session__process_events(session);
882 if (err) 882 if (err)
883 goto out_delete; 883 goto out_delete;
884 884
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index 9b5663950a4d..46c69318de84 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -141,7 +141,7 @@ static int report_raw_events(struct perf_mem *mem)
141 141
142 printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n"); 142 printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
143 143
144 err = perf_session__process_events(session, &mem->tool); 144 err = perf_session__process_events(session);
145 if (err) 145 if (err)
146 return err; 146 return err;
147 147
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 4fdad06d37db..5a2ff510b75b 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -225,7 +225,7 @@ static int process_buildids(struct record *rec)
225 */ 225 */
226 symbol_conf.ignore_vmlinux_buildid = true; 226 symbol_conf.ignore_vmlinux_buildid = true;
227 227
228 return perf_session__process_events(session, &rec->tool); 228 return perf_session__process_events(session);
229} 229}
230 230
231static void perf_event__synthesize_guest_os(struct machine *machine, void *data) 231static void perf_event__synthesize_guest_os(struct machine *machine, void *data)
@@ -343,7 +343,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
343 signal(SIGINT, sig_handler); 343 signal(SIGINT, sig_handler);
344 signal(SIGTERM, sig_handler); 344 signal(SIGTERM, sig_handler);
345 345
346 session = perf_session__new(file, false, NULL); 346 session = perf_session__new(file, false, tool);
347 if (session == NULL) { 347 if (session == NULL) {
348 pr_err("Perf session creation failed.\n"); 348 pr_err("Perf session creation failed.\n");
349 return -1; 349 return -1;
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index fb350343b1d7..52f74e1367e9 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -482,7 +482,7 @@ static int __cmd_report(struct report *rep)
482 if (ret) 482 if (ret)
483 return ret; 483 return ret;
484 484
485 ret = perf_session__process_events(session, &rep->tool); 485 ret = perf_session__process_events(session);
486 if (ret) 486 if (ret)
487 return ret; 487 return ret;
488 488
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index a3ebf1d3c29d..3b3a5bb97059 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1467,7 +1467,7 @@ static int perf_sched__read_events(struct perf_sched *sched)
1467 goto out_delete; 1467 goto out_delete;
1468 1468
1469 if (perf_session__has_traces(session, "record -R")) { 1469 if (perf_session__has_traces(session, "record -R")) {
1470 int err = perf_session__process_events(session, &sched->tool); 1470 int err = perf_session__process_events(session);
1471 if (err) { 1471 if (err) {
1472 pr_err("Failed to process events, error %d", err); 1472 pr_err("Failed to process events, error %d", err);
1473 goto out_delete; 1473 goto out_delete;
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index ce304dfd962a..c7e6750923ef 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -800,7 +800,7 @@ static int __cmd_script(struct perf_script *script)
800 script->tool.mmap2 = process_mmap2_event; 800 script->tool.mmap2 = process_mmap2_event;
801 } 801 }
802 802
803 ret = perf_session__process_events(script->session, &script->tool); 803 ret = perf_session__process_events(script->session);
804 804
805 if (debug_mode) 805 if (debug_mode)
806 pr_err("Misordered timestamps: %" PRIu64 "\n", nr_unordered); 806 pr_err("Misordered timestamps: %" PRIu64 "\n", nr_unordered);
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index f3bb1a4bf060..51440d1fc722 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -1623,7 +1623,7 @@ static int __cmd_timechart(struct timechart *tchart, const char *output_name)
1623 goto out_delete; 1623 goto out_delete;
1624 } 1624 }
1625 1625
1626 ret = perf_session__process_events(session, &tchart->tool); 1626 ret = perf_session__process_events(session);
1627 if (ret) 1627 if (ret)
1628 goto out_delete; 1628 goto out_delete;
1629 1629
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 211614fba217..6969ba98ff2f 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -2408,7 +2408,7 @@ static int trace__replay(struct trace *trace)
2408 2408
2409 setup_pager(); 2409 setup_pager();
2410 2410
2411 err = perf_session__process_events(session, &trace->tool); 2411 err = perf_session__process_events(session);
2412 if (err) 2412 if (err)
2413 pr_err("Failed to process events, error %d", err); 2413 pr_err("Failed to process events, error %d", err);
2414 2414
diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index e372e03ff480..1afd381b2346 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -579,7 +579,7 @@ int bt_convert__perf2ctf(const char *input, const char *path)
579 return -1; 579 return -1;
580 580
581 /* perf.data session */ 581 /* perf.data session */
582 session = perf_session__new(&file, 0, NULL); 582 session = perf_session__new(&file, 0, &c.tool);
583 if (!session) 583 if (!session)
584 goto free_writer; 584 goto free_writer;
585 585
@@ -591,7 +591,7 @@ int bt_convert__perf2ctf(const char *input, const char *path)
591 if (setup_events(cw, session)) 591 if (setup_events(cw, session))
592 goto free_session; 592 goto free_session;
593 593
594 err = perf_session__process_events(session, &c.tool); 594 err = perf_session__process_events(session);
595 if (!err) 595 if (!err)
596 err = bt_ctf_stream_flush(cw->stream); 596 err = bt_ctf_stream_flush(cw->stream);
597 597
diff --git a/tools/perf/util/ordered-events.c b/tools/perf/util/ordered-events.c
index e6ab630dd374..bad46ce16591 100644
--- a/tools/perf/util/ordered-events.c
+++ b/tools/perf/util/ordered-events.c
@@ -153,10 +153,7 @@ void ordered_events__delete(struct ordered_events *oe, struct ordered_event *eve
153 free_dup_event(oe, event->event); 153 free_dup_event(oe, event->event);
154} 154}
155 155
156static int __ordered_events__flush(struct ordered_events *oe, 156static int __ordered_events__flush(struct ordered_events *oe)
157 struct machines *machines,
158 struct perf_evlist *evlist,
159 struct perf_tool *tool)
160{ 157{
161 struct list_head *head = &oe->events; 158 struct list_head *head = &oe->events;
162 struct ordered_event *tmp, *iter; 159 struct ordered_event *tmp, *iter;
@@ -180,12 +177,12 @@ static int __ordered_events__flush(struct ordered_events *oe,
180 if (iter->timestamp > limit) 177 if (iter->timestamp > limit)
181 break; 178 break;
182 179
183 ret = perf_evlist__parse_sample(evlist, iter->event, &sample); 180 ret = perf_evlist__parse_sample(oe->evlist, iter->event, &sample);
184 if (ret) 181 if (ret)
185 pr_err("Can't parse sample, err = %d\n", ret); 182 pr_err("Can't parse sample, err = %d\n", ret);
186 else { 183 else {
187 ret = machines__deliver_event(machines, evlist, iter->event, 184 ret = machines__deliver_event(oe->machines, oe->evlist, iter->event,
188 &sample, tool, iter->file_offset); 185 &sample, oe->tool, iter->file_offset);
189 if (ret) 186 if (ret)
190 return ret; 187 return ret;
191 } 188 }
@@ -205,9 +202,7 @@ static int __ordered_events__flush(struct ordered_events *oe,
205 return 0; 202 return 0;
206} 203}
207 204
208int ordered_events__flush(struct ordered_events *oe, struct machines *machines, 205int ordered_events__flush(struct ordered_events *oe, enum oe_flush how)
209 struct perf_evlist *evlist, struct perf_tool *tool,
210 enum oe_flush how)
211{ 206{
212 static const char * const str[] = { 207 static const char * const str[] = {
213 "NONE", 208 "NONE",
@@ -252,7 +247,7 @@ int ordered_events__flush(struct ordered_events *oe, struct machines *machines,
252 str[how], oe->nr_events); 247 str[how], oe->nr_events);
253 pr_oe_time(oe->max_timestamp, "max_timestamp\n"); 248 pr_oe_time(oe->max_timestamp, "max_timestamp\n");
254 249
255 err = __ordered_events__flush(oe, machines, evlist, tool); 250 err = __ordered_events__flush(oe);
256 251
257 if (!err) { 252 if (!err) {
258 if (how == OE_FLUSH__ROUND) 253 if (how == OE_FLUSH__ROUND)
@@ -268,13 +263,17 @@ int ordered_events__flush(struct ordered_events *oe, struct machines *machines,
268 return err; 263 return err;
269} 264}
270 265
271void ordered_events__init(struct ordered_events *oe) 266void ordered_events__init(struct ordered_events *oe, struct machines *machines,
267 struct perf_evlist *evlist, struct perf_tool *tool)
272{ 268{
273 INIT_LIST_HEAD(&oe->events); 269 INIT_LIST_HEAD(&oe->events);
274 INIT_LIST_HEAD(&oe->cache); 270 INIT_LIST_HEAD(&oe->cache);
275 INIT_LIST_HEAD(&oe->to_free); 271 INIT_LIST_HEAD(&oe->to_free);
276 oe->max_alloc_size = (u64) -1; 272 oe->max_alloc_size = (u64) -1;
277 oe->cur_alloc_size = 0; 273 oe->cur_alloc_size = 0;
274 oe->evlist = evlist;
275 oe->machines = machines;
276 oe->tool = tool;
278} 277}
279 278
280void ordered_events__free(struct ordered_events *oe) 279void ordered_events__free(struct ordered_events *oe)
diff --git a/tools/perf/util/ordered-events.h b/tools/perf/util/ordered-events.h
index e09f2433c6d6..ef7d73ecb0d0 100644
--- a/tools/perf/util/ordered-events.h
+++ b/tools/perf/util/ordered-events.h
@@ -32,6 +32,9 @@ struct ordered_events {
32 struct list_head to_free; 32 struct list_head to_free;
33 struct ordered_event *buffer; 33 struct ordered_event *buffer;
34 struct ordered_event *last; 34 struct ordered_event *last;
35 struct machines *machines;
36 struct perf_evlist *evlist;
37 struct perf_tool *tool;
35 int buffer_idx; 38 int buffer_idx;
36 unsigned int nr_events; 39 unsigned int nr_events;
37 enum oe_flush last_flush_type; 40 enum oe_flush last_flush_type;
@@ -41,10 +44,9 @@ struct ordered_events {
41struct ordered_event *ordered_events__new(struct ordered_events *oe, u64 timestamp, 44struct ordered_event *ordered_events__new(struct ordered_events *oe, u64 timestamp,
42 union perf_event *event); 45 union perf_event *event);
43void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event); 46void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event);
44int ordered_events__flush(struct ordered_events *oe, struct machines *machines, 47int ordered_events__flush(struct ordered_events *oe, enum oe_flush how);
45 struct perf_evlist *evlist, struct perf_tool *tool, 48void ordered_events__init(struct ordered_events *oe, struct machines *machines,
46 enum oe_flush how); 49 struct perf_evlist *evlsit, struct perf_tool *tool);
47void ordered_events__init(struct ordered_events *oe);
48void ordered_events__free(struct ordered_events *oe); 50void ordered_events__free(struct ordered_events *oe);
49 51
50static inline 52static inline
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 23be146bd2fc..c6dd89f62fc4 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -95,7 +95,6 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
95 goto out; 95 goto out;
96 96
97 session->repipe = repipe; 97 session->repipe = repipe;
98 ordered_events__init(&session->ordered_events);
99 machines__init(&session->machines); 98 machines__init(&session->machines);
100 99
101 if (file) { 100 if (file) {
@@ -126,7 +125,8 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
126 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { 125 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) {
127 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n"); 126 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
128 tool->ordered_events = false; 127 tool->ordered_events = false;
129 } 128 } else
129 ordered_events__init(&session->ordered_events, &session->machines, session->evlist, tool);
130 130
131 return session; 131 return session;
132 132
@@ -508,24 +508,19 @@ static perf_event__swap_op perf_event__swap_ops[] = {
508 * Flush every events below timestamp 7 508 * Flush every events below timestamp 7
509 * etc... 509 * etc...
510 */ 510 */
511static int process_finished_round(struct perf_tool *tool, 511static int process_finished_round(struct perf_tool *tool __maybe_unused,
512 union perf_event *event __maybe_unused, 512 union perf_event *event __maybe_unused,
513 struct perf_session *session) 513 struct perf_session *session)
514{ 514{
515 struct ordered_events *oe = &session->ordered_events; 515 struct ordered_events *oe = &session->ordered_events;
516 struct perf_evlist *evlist = session->evlist;
517 struct machines *machines = &session->machines;
518 516
519 return ordered_events__flush(oe, machines, evlist, tool, OE_FLUSH__ROUND); 517 return ordered_events__flush(oe, OE_FLUSH__ROUND);
520} 518}
521 519
522int perf_session_queue_event(struct perf_session *s, union perf_event *event, 520int perf_session__queue_event(struct perf_session *s, union perf_event *event,
523 struct perf_tool *tool, struct perf_sample *sample, 521 struct perf_sample *sample, u64 file_offset)
524 u64 file_offset)
525{ 522{
526 struct ordered_events *oe = &s->ordered_events; 523 struct ordered_events *oe = &s->ordered_events;
527 struct perf_evlist *evlist = s->evlist;
528 struct machines *machines = &s->machines;
529 524
530 u64 timestamp = sample->time; 525 u64 timestamp = sample->time;
531 struct ordered_event *new; 526 struct ordered_event *new;
@@ -543,7 +538,7 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
543 538
544 new = ordered_events__new(oe, timestamp, event); 539 new = ordered_events__new(oe, timestamp, event);
545 if (!new) { 540 if (!new) {
546 ordered_events__flush(oe, machines, evlist, tool, OE_FLUSH__HALF); 541 ordered_events__flush(oe, OE_FLUSH__HALF);
547 new = ordered_events__new(oe, timestamp, event); 542 new = ordered_events__new(oe, timestamp, event);
548 } 543 }
549 544
@@ -948,9 +943,9 @@ int machines__deliver_event(struct machines *machines,
948 943
949static s64 perf_session__process_user_event(struct perf_session *session, 944static s64 perf_session__process_user_event(struct perf_session *session,
950 union perf_event *event, 945 union perf_event *event,
951 struct perf_tool *tool,
952 u64 file_offset) 946 u64 file_offset)
953{ 947{
948 struct perf_tool *tool = session->ordered_events.tool;
954 int fd = perf_data_file__fd(session->file); 949 int fd = perf_data_file__fd(session->file);
955 int err; 950 int err;
956 951
@@ -988,15 +983,15 @@ static s64 perf_session__process_user_event(struct perf_session *session,
988 983
989int perf_session__deliver_synth_event(struct perf_session *session, 984int perf_session__deliver_synth_event(struct perf_session *session,
990 union perf_event *event, 985 union perf_event *event,
991 struct perf_sample *sample, 986 struct perf_sample *sample)
992 struct perf_tool *tool)
993{ 987{
994 struct perf_evlist *evlist = session->evlist; 988 struct perf_evlist *evlist = session->evlist;
989 struct perf_tool *tool = session->ordered_events.tool;
995 990
996 events_stats__inc(&evlist->stats, event->header.type); 991 events_stats__inc(&evlist->stats, event->header.type);
997 992
998 if (event->header.type >= PERF_RECORD_USER_TYPE_START) 993 if (event->header.type >= PERF_RECORD_USER_TYPE_START)
999 return perf_session__process_user_event(session, event, tool, 0); 994 return perf_session__process_user_event(session, event, 0);
1000 995
1001 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0); 996 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0);
1002} 997}
@@ -1066,11 +1061,10 @@ out_parse_sample:
1066} 1061}
1067 1062
1068static s64 perf_session__process_event(struct perf_session *session, 1063static s64 perf_session__process_event(struct perf_session *session,
1069 union perf_event *event, 1064 union perf_event *event, u64 file_offset)
1070 struct perf_tool *tool,
1071 u64 file_offset)
1072{ 1065{
1073 struct perf_evlist *evlist = session->evlist; 1066 struct perf_evlist *evlist = session->evlist;
1067 struct perf_tool *tool = session->ordered_events.tool;
1074 struct perf_sample sample; 1068 struct perf_sample sample;
1075 int ret; 1069 int ret;
1076 1070
@@ -1083,7 +1077,7 @@ static s64 perf_session__process_event(struct perf_session *session,
1083 events_stats__inc(&evlist->stats, event->header.type); 1077 events_stats__inc(&evlist->stats, event->header.type);
1084 1078
1085 if (event->header.type >= PERF_RECORD_USER_TYPE_START) 1079 if (event->header.type >= PERF_RECORD_USER_TYPE_START)
1086 return perf_session__process_user_event(session, event, tool, file_offset); 1080 return perf_session__process_user_event(session, event, file_offset);
1087 1081
1088 /* 1082 /*
1089 * For all kernel events we get the sample data 1083 * For all kernel events we get the sample data
@@ -1093,8 +1087,7 @@ static s64 perf_session__process_event(struct perf_session *session,
1093 return ret; 1087 return ret;
1094 1088
1095 if (tool->ordered_events) { 1089 if (tool->ordered_events) {
1096 ret = perf_session_queue_event(session, event, tool, &sample, 1090 ret = perf_session__queue_event(session, event, &sample, file_offset);
1097 file_offset);
1098 if (ret != -ETIME) 1091 if (ret != -ETIME)
1099 return ret; 1092 return ret;
1100 } 1093 }
@@ -1173,12 +1166,10 @@ static void perf_tool__warn_about_errors(const struct perf_tool *tool,
1173 1166
1174volatile int session_done; 1167volatile int session_done;
1175 1168
1176static int __perf_session__process_pipe_events(struct perf_session *session, 1169static int __perf_session__process_pipe_events(struct perf_session *session)
1177 struct perf_tool *tool)
1178{ 1170{
1179 struct ordered_events *oe = &session->ordered_events; 1171 struct ordered_events *oe = &session->ordered_events;
1180 struct perf_evlist *evlist = session->evlist; 1172 struct perf_tool *tool = oe->tool;
1181 struct machines *machines = &session->machines;
1182 int fd = perf_data_file__fd(session->file); 1173 int fd = perf_data_file__fd(session->file);
1183 union perf_event *event; 1174 union perf_event *event;
1184 uint32_t size, cur_size = 0; 1175 uint32_t size, cur_size = 0;
@@ -1242,7 +1233,7 @@ more:
1242 } 1233 }
1243 } 1234 }
1244 1235
1245 if ((skip = perf_session__process_event(session, event, tool, head)) < 0) { 1236 if ((skip = perf_session__process_event(session, event, head)) < 0) {
1246 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n", 1237 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
1247 head, event->header.size, event->header.type); 1238 head, event->header.size, event->header.type);
1248 err = -EINVAL; 1239 err = -EINVAL;
@@ -1258,7 +1249,7 @@ more:
1258 goto more; 1249 goto more;
1259done: 1250done:
1260 /* do the final flush for ordered samples */ 1251 /* do the final flush for ordered samples */
1261 err = ordered_events__flush(oe, machines, evlist, tool, OE_FLUSH__FINAL); 1252 err = ordered_events__flush(oe, OE_FLUSH__FINAL);
1262out_err: 1253out_err:
1263 free(buf); 1254 free(buf);
1264 perf_tool__warn_about_errors(tool, &session->evlist->stats); 1255 perf_tool__warn_about_errors(tool, &session->evlist->stats);
@@ -1308,11 +1299,10 @@ fetch_mmaped_event(struct perf_session *session,
1308 1299
1309static int __perf_session__process_events(struct perf_session *session, 1300static int __perf_session__process_events(struct perf_session *session,
1310 u64 data_offset, u64 data_size, 1301 u64 data_offset, u64 data_size,
1311 u64 file_size, struct perf_tool *tool) 1302 u64 file_size)
1312{ 1303{
1313 struct ordered_events *oe = &session->ordered_events; 1304 struct ordered_events *oe = &session->ordered_events;
1314 struct perf_evlist *evlist = session->evlist; 1305 struct perf_tool *tool = oe->tool;
1315 struct machines *machines = &session->machines;
1316 int fd = perf_data_file__fd(session->file); 1306 int fd = perf_data_file__fd(session->file);
1317 u64 head, page_offset, file_offset, file_pos, size; 1307 u64 head, page_offset, file_offset, file_pos, size;
1318 int err, mmap_prot, mmap_flags, map_idx = 0; 1308 int err, mmap_prot, mmap_flags, map_idx = 0;
@@ -1381,8 +1371,7 @@ more:
1381 size = event->header.size; 1371 size = event->header.size;
1382 1372
1383 if (size < sizeof(struct perf_event_header) || 1373 if (size < sizeof(struct perf_event_header) ||
1384 (skip = perf_session__process_event(session, event, tool, file_pos)) 1374 (skip = perf_session__process_event(session, event, file_pos)) < 0) {
1385 < 0) {
1386 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n", 1375 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
1387 file_offset + head, event->header.size, 1376 file_offset + head, event->header.size,
1388 event->header.type); 1377 event->header.type);
@@ -1406,7 +1395,7 @@ more:
1406 1395
1407out: 1396out:
1408 /* do the final flush for ordered samples */ 1397 /* do the final flush for ordered samples */
1409 err = ordered_events__flush(oe, machines, evlist, tool, OE_FLUSH__FINAL); 1398 err = ordered_events__flush(oe, OE_FLUSH__FINAL);
1410out_err: 1399out_err:
1411 ui_progress__finish(); 1400 ui_progress__finish();
1412 perf_tool__warn_about_errors(tool, &session->evlist->stats); 1401 perf_tool__warn_about_errors(tool, &session->evlist->stats);
@@ -1415,8 +1404,7 @@ out_err:
1415 return err; 1404 return err;
1416} 1405}
1417 1406
1418int perf_session__process_events(struct perf_session *session, 1407int perf_session__process_events(struct perf_session *session)
1419 struct perf_tool *tool)
1420{ 1408{
1421 u64 size = perf_data_file__size(session->file); 1409 u64 size = perf_data_file__size(session->file);
1422 int err; 1410 int err;
@@ -1427,10 +1415,9 @@ int perf_session__process_events(struct perf_session *session,
1427 if (!perf_data_file__is_pipe(session->file)) 1415 if (!perf_data_file__is_pipe(session->file))
1428 err = __perf_session__process_events(session, 1416 err = __perf_session__process_events(session,
1429 session->header.data_offset, 1417 session->header.data_offset,
1430 session->header.data_size, 1418 session->header.data_size, size);
1431 size, tool);
1432 else 1419 else
1433 err = __perf_session__process_pipe_events(session, tool); 1420 err = __perf_session__process_pipe_events(session);
1434 1421
1435 return err; 1422 return err;
1436} 1423}
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index c08fa6be5bf3..06e0777e9803 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -48,12 +48,10 @@ int perf_session__peek_event(struct perf_session *session, off_t file_offset,
48 union perf_event **event_ptr, 48 union perf_event **event_ptr,
49 struct perf_sample *sample); 49 struct perf_sample *sample);
50 50
51int perf_session__process_events(struct perf_session *session, 51int perf_session__process_events(struct perf_session *session);
52 struct perf_tool *tool);
53 52
54int perf_session_queue_event(struct perf_session *s, union perf_event *event, 53int perf_session__queue_event(struct perf_session *s, union perf_event *event,
55 struct perf_tool *tool, struct perf_sample *sample, 54 struct perf_sample *sample, u64 file_offset);
56 u64 file_offset);
57 55
58void perf_tool__fill_defaults(struct perf_tool *tool); 56void perf_tool__fill_defaults(struct perf_tool *tool);
59 57
@@ -126,8 +124,7 @@ extern volatile int session_done;
126 124
127int perf_session__deliver_synth_event(struct perf_session *session, 125int perf_session__deliver_synth_event(struct perf_session *session,
128 union perf_event *event, 126 union perf_event *event,
129 struct perf_sample *sample, 127 struct perf_sample *sample);
130 struct perf_tool *tool);
131 128
132int perf_event__process_id_index(struct perf_tool *tool, 129int perf_event__process_id_index(struct perf_tool *tool,
133 union perf_event *event, 130 union perf_event *event,