diff options
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 60 |
1 files changed, 35 insertions, 25 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 734358b51ed..a36023a6677 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -270,13 +270,21 @@ int perf_session__resolve_callchain(struct perf_session *self, struct perf_evsel | |||
270 | return 0; | 270 | return 0; |
271 | } | 271 | } |
272 | 272 | ||
273 | static int process_event_synth_stub(union perf_event *event __used, | 273 | static int process_event_synth_stub(struct perf_event_ops *ops __used, |
274 | union perf_event *event __used, | ||
274 | struct perf_session *session __used) | 275 | struct perf_session *session __used) |
275 | { | 276 | { |
276 | dump_printf(": unhandled!\n"); | 277 | dump_printf(": unhandled!\n"); |
277 | return 0; | 278 | return 0; |
278 | } | 279 | } |
279 | 280 | ||
281 | static int process_event_synth_tracing_data_stub(union perf_event *event __used, | ||
282 | struct perf_session *session __used) | ||
283 | { | ||
284 | dump_printf(": unhandled!\n"); | ||
285 | return 0; | ||
286 | } | ||
287 | |||
280 | static int process_event_synth_attr_stub(union perf_event *event __used, | 288 | static int process_event_synth_attr_stub(union perf_event *event __used, |
281 | struct perf_evlist **pevlist __used) | 289 | struct perf_evlist **pevlist __used) |
282 | { | 290 | { |
@@ -284,7 +292,8 @@ static int process_event_synth_attr_stub(union perf_event *event __used, | |||
284 | return 0; | 292 | return 0; |
285 | } | 293 | } |
286 | 294 | ||
287 | static int process_event_sample_stub(union perf_event *event __used, | 295 | static int process_event_sample_stub(struct perf_event_ops *ops __used, |
296 | union perf_event *event __used, | ||
288 | struct perf_sample *sample __used, | 297 | struct perf_sample *sample __used, |
289 | struct perf_evsel *evsel __used, | 298 | struct perf_evsel *evsel __used, |
290 | struct perf_session *session __used) | 299 | struct perf_session *session __used) |
@@ -293,7 +302,8 @@ static int process_event_sample_stub(union perf_event *event __used, | |||
293 | return 0; | 302 | return 0; |
294 | } | 303 | } |
295 | 304 | ||
296 | static int process_event_stub(union perf_event *event __used, | 305 | static int process_event_stub(struct perf_event_ops *ops __used, |
306 | union perf_event *event __used, | ||
297 | struct perf_sample *sample __used, | 307 | struct perf_sample *sample __used, |
298 | struct perf_session *session __used) | 308 | struct perf_session *session __used) |
299 | { | 309 | { |
@@ -301,17 +311,17 @@ static int process_event_stub(union perf_event *event __used, | |||
301 | return 0; | 311 | return 0; |
302 | } | 312 | } |
303 | 313 | ||
304 | static int process_finished_round_stub(union perf_event *event __used, | 314 | static int process_finished_round_stub(struct perf_event_ops *ops __used, |
305 | struct perf_session *session __used, | 315 | union perf_event *event __used, |
306 | struct perf_event_ops *ops __used) | 316 | struct perf_session *session __used) |
307 | { | 317 | { |
308 | dump_printf(": unhandled!\n"); | 318 | dump_printf(": unhandled!\n"); |
309 | return 0; | 319 | return 0; |
310 | } | 320 | } |
311 | 321 | ||
312 | static int process_finished_round(union perf_event *event, | 322 | static int process_finished_round(struct perf_event_ops *ops, |
313 | struct perf_session *session, | 323 | union perf_event *event, |
314 | struct perf_event_ops *ops); | 324 | struct perf_session *session); |
315 | 325 | ||
316 | static void perf_event_ops__fill_defaults(struct perf_event_ops *handler) | 326 | static void perf_event_ops__fill_defaults(struct perf_event_ops *handler) |
317 | { | 327 | { |
@@ -338,7 +348,7 @@ static void perf_event_ops__fill_defaults(struct perf_event_ops *handler) | |||
338 | if (handler->event_type == NULL) | 348 | if (handler->event_type == NULL) |
339 | handler->event_type = process_event_synth_stub; | 349 | handler->event_type = process_event_synth_stub; |
340 | if (handler->tracing_data == NULL) | 350 | if (handler->tracing_data == NULL) |
341 | handler->tracing_data = process_event_synth_stub; | 351 | handler->tracing_data = process_event_synth_tracing_data_stub; |
342 | if (handler->build_id == NULL) | 352 | if (handler->build_id == NULL) |
343 | handler->build_id = process_event_synth_stub; | 353 | handler->build_id = process_event_synth_stub; |
344 | if (handler->finished_round == NULL) { | 354 | if (handler->finished_round == NULL) { |
@@ -565,9 +575,9 @@ static void flush_sample_queue(struct perf_session *s, | |||
565 | * Flush every events below timestamp 7 | 575 | * Flush every events below timestamp 7 |
566 | * etc... | 576 | * etc... |
567 | */ | 577 | */ |
568 | static int process_finished_round(union perf_event *event __used, | 578 | static int process_finished_round(struct perf_event_ops *ops, |
569 | struct perf_session *session, | 579 | union perf_event *event __used, |
570 | struct perf_event_ops *ops) | 580 | struct perf_session *session) |
571 | { | 581 | { |
572 | flush_sample_queue(session, ops); | 582 | flush_sample_queue(session, ops); |
573 | session->ordered_samples.next_flush = session->ordered_samples.max_timestamp; | 583 | session->ordered_samples.next_flush = session->ordered_samples.max_timestamp; |
@@ -759,23 +769,23 @@ static int perf_session_deliver_event(struct perf_session *session, | |||
759 | ++session->hists.stats.nr_unknown_id; | 769 | ++session->hists.stats.nr_unknown_id; |
760 | return -1; | 770 | return -1; |
761 | } | 771 | } |
762 | return ops->sample(event, sample, evsel, session); | 772 | return ops->sample(ops, event, sample, evsel, session); |
763 | case PERF_RECORD_MMAP: | 773 | case PERF_RECORD_MMAP: |
764 | return ops->mmap(event, sample, session); | 774 | return ops->mmap(ops, event, sample, session); |
765 | case PERF_RECORD_COMM: | 775 | case PERF_RECORD_COMM: |
766 | return ops->comm(event, sample, session); | 776 | return ops->comm(ops, event, sample, session); |
767 | case PERF_RECORD_FORK: | 777 | case PERF_RECORD_FORK: |
768 | return ops->fork(event, sample, session); | 778 | return ops->fork(ops, event, sample, session); |
769 | case PERF_RECORD_EXIT: | 779 | case PERF_RECORD_EXIT: |
770 | return ops->exit(event, sample, session); | 780 | return ops->exit(ops, event, sample, session); |
771 | case PERF_RECORD_LOST: | 781 | case PERF_RECORD_LOST: |
772 | return ops->lost(event, sample, session); | 782 | return ops->lost(ops, event, sample, session); |
773 | case PERF_RECORD_READ: | 783 | case PERF_RECORD_READ: |
774 | return ops->read(event, sample, session); | 784 | return ops->read(ops, event, sample, session); |
775 | case PERF_RECORD_THROTTLE: | 785 | case PERF_RECORD_THROTTLE: |
776 | return ops->throttle(event, sample, session); | 786 | return ops->throttle(ops, event, sample, session); |
777 | case PERF_RECORD_UNTHROTTLE: | 787 | case PERF_RECORD_UNTHROTTLE: |
778 | return ops->unthrottle(event, sample, session); | 788 | return ops->unthrottle(ops, event, sample, session); |
779 | default: | 789 | default: |
780 | ++session->hists.stats.nr_unknown_events; | 790 | ++session->hists.stats.nr_unknown_events; |
781 | return -1; | 791 | return -1; |
@@ -813,15 +823,15 @@ static int perf_session__process_user_event(struct perf_session *session, union | |||
813 | perf_session__update_sample_type(session); | 823 | perf_session__update_sample_type(session); |
814 | return err; | 824 | return err; |
815 | case PERF_RECORD_HEADER_EVENT_TYPE: | 825 | case PERF_RECORD_HEADER_EVENT_TYPE: |
816 | return ops->event_type(event, session); | 826 | return ops->event_type(ops, event, session); |
817 | case PERF_RECORD_HEADER_TRACING_DATA: | 827 | case PERF_RECORD_HEADER_TRACING_DATA: |
818 | /* setup for reading amidst mmap */ | 828 | /* setup for reading amidst mmap */ |
819 | lseek(session->fd, file_offset, SEEK_SET); | 829 | lseek(session->fd, file_offset, SEEK_SET); |
820 | return ops->tracing_data(event, session); | 830 | return ops->tracing_data(event, session); |
821 | case PERF_RECORD_HEADER_BUILD_ID: | 831 | case PERF_RECORD_HEADER_BUILD_ID: |
822 | return ops->build_id(event, session); | 832 | return ops->build_id(ops, event, session); |
823 | case PERF_RECORD_FINISHED_ROUND: | 833 | case PERF_RECORD_FINISHED_ROUND: |
824 | return ops->finished_round(event, session, ops); | 834 | return ops->finished_round(ops, event, session); |
825 | default: | 835 | default: |
826 | return -EINVAL; | 836 | return -EINVAL; |
827 | } | 837 | } |