diff options
| -rw-r--r-- | tools/perf/Makefile | 1 | ||||
| -rw-r--r-- | tools/perf/builtin-annotate.c | 10 | ||||
| -rw-r--r-- | tools/perf/builtin-buildid-list.c | 1 | ||||
| -rw-r--r-- | tools/perf/builtin-kmem.c | 8 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 7 | ||||
| -rw-r--r-- | tools/perf/builtin-sched.c | 7 | ||||
| -rw-r--r-- | tools/perf/builtin-timechart.c | 9 | ||||
| -rw-r--r-- | tools/perf/builtin-trace.c | 8 | ||||
| -rw-r--r-- | tools/perf/util/data_map.c | 41 | ||||
| -rw-r--r-- | tools/perf/util/data_map.h | 32 | ||||
| -rw-r--r-- | tools/perf/util/header.c | 2 | ||||
| -rw-r--r-- | tools/perf/util/session.c | 3 | ||||
| -rw-r--r-- | tools/perf/util/session.h | 26 |
13 files changed, 66 insertions, 89 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 406999668cab..a4cb79255383 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
| @@ -370,7 +370,6 @@ LIB_H += util/values.h | |||
| 370 | LIB_H += util/sort.h | 370 | LIB_H += util/sort.h |
| 371 | LIB_H += util/hist.h | 371 | LIB_H += util/hist.h |
| 372 | LIB_H += util/thread.h | 372 | LIB_H += util/thread.h |
| 373 | LIB_H += util/data_map.h | ||
| 374 | LIB_H += util/probe-finder.h | 373 | LIB_H += util/probe-finder.h |
| 375 | LIB_H += util/probe-event.h | 374 | LIB_H += util/probe-event.h |
| 376 | 375 | ||
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 2e418b9fc1c4..43e3bb354442 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
| @@ -26,7 +26,6 @@ | |||
| 26 | #include "util/sort.h" | 26 | #include "util/sort.h" |
| 27 | #include "util/hist.h" | 27 | #include "util/hist.h" |
| 28 | #include "util/session.h" | 28 | #include "util/session.h" |
| 29 | #include "util/data_map.h" | ||
| 30 | 29 | ||
| 31 | static char const *input_name = "perf.data"; | 30 | static char const *input_name = "perf.data"; |
| 32 | 31 | ||
| @@ -454,7 +453,7 @@ static void find_annotations(void) | |||
| 454 | } | 453 | } |
| 455 | } | 454 | } |
| 456 | 455 | ||
| 457 | static struct perf_file_handler file_handler = { | 456 | static struct perf_event_ops event_ops = { |
| 458 | .process_sample_event = process_sample_event, | 457 | .process_sample_event = process_sample_event, |
| 459 | .process_mmap_event = event__process_mmap, | 458 | .process_mmap_event = event__process_mmap, |
| 460 | .process_comm_event = event__process_comm, | 459 | .process_comm_event = event__process_comm, |
| @@ -463,7 +462,8 @@ static struct perf_file_handler file_handler = { | |||
| 463 | 462 | ||
| 464 | static int __cmd_annotate(void) | 463 | static int __cmd_annotate(void) |
| 465 | { | 464 | { |
| 466 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, force); | 465 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, |
| 466 | force); | ||
| 467 | struct thread *idle; | 467 | struct thread *idle; |
| 468 | int ret; | 468 | int ret; |
| 469 | 469 | ||
| @@ -471,9 +471,9 @@ static int __cmd_annotate(void) | |||
| 471 | return -ENOMEM; | 471 | return -ENOMEM; |
| 472 | 472 | ||
| 473 | idle = register_idle_thread(); | 473 | idle = register_idle_thread(); |
| 474 | register_perf_file_handler(&file_handler); | ||
| 475 | 474 | ||
| 476 | ret = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd); | 475 | ret = perf_session__process_events(session, &event_ops, 0, |
| 476 | &event__cwdlen, &event__cwd); | ||
| 477 | if (ret) | 477 | if (ret) |
| 478 | goto out_delete; | 478 | goto out_delete; |
| 479 | 479 | ||
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index bfd16a1594e4..2629f76d95fe 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | #include "builtin.h" | 9 | #include "builtin.h" |
| 10 | #include "perf.h" | 10 | #include "perf.h" |
| 11 | #include "util/cache.h" | 11 | #include "util/cache.h" |
| 12 | #include "util/data_map.h" | ||
| 13 | #include "util/debug.h" | 12 | #include "util/debug.h" |
| 14 | #include "util/parse-options.h" | 13 | #include "util/parse-options.h" |
| 15 | #include "util/session.h" | 14 | #include "util/session.h" |
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 101b2682b4df..6f74bd8d20e6 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #include "util/trace-event.h" | 12 | #include "util/trace-event.h" |
| 13 | 13 | ||
| 14 | #include "util/debug.h" | 14 | #include "util/debug.h" |
| 15 | #include "util/data_map.h" | ||
| 16 | 15 | ||
| 17 | #include <linux/rbtree.h> | 16 | #include <linux/rbtree.h> |
| 18 | 17 | ||
| @@ -359,7 +358,7 @@ static int sample_type_check(u64 type) | |||
| 359 | return 0; | 358 | return 0; |
| 360 | } | 359 | } |
| 361 | 360 | ||
| 362 | static struct perf_file_handler file_handler = { | 361 | static struct perf_event_ops event_ops = { |
| 363 | .process_sample_event = process_sample_event, | 362 | .process_sample_event = process_sample_event, |
| 364 | .process_comm_event = event__process_comm, | 363 | .process_comm_event = event__process_comm, |
| 365 | .sample_type_check = sample_type_check, | 364 | .sample_type_check = sample_type_check, |
| @@ -374,9 +373,8 @@ static int read_events(void) | |||
| 374 | return -ENOMEM; | 373 | return -ENOMEM; |
| 375 | 374 | ||
| 376 | register_idle_thread(); | 375 | register_idle_thread(); |
| 377 | register_perf_file_handler(&file_handler); | 376 | err = perf_session__process_events(session, &event_ops, 0, |
| 378 | 377 | &event__cwdlen, &event__cwd); | |
| 379 | err = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd); | ||
| 380 | perf_session__delete(session); | 378 | perf_session__delete(session); |
| 381 | return err; | 379 | return err; |
| 382 | } | 380 | } |
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index dcd8fedc298c..c203eaf73a2f 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
| @@ -27,7 +27,6 @@ | |||
| 27 | #include "util/parse-options.h" | 27 | #include "util/parse-options.h" |
| 28 | #include "util/parse-events.h" | 28 | #include "util/parse-events.h" |
| 29 | 29 | ||
| 30 | #include "util/data_map.h" | ||
| 31 | #include "util/thread.h" | 30 | #include "util/thread.h" |
| 32 | #include "util/sort.h" | 31 | #include "util/sort.h" |
| 33 | #include "util/hist.h" | 32 | #include "util/hist.h" |
| @@ -748,7 +747,7 @@ static int sample_type_check(u64 type) | |||
| 748 | return 0; | 747 | return 0; |
| 749 | } | 748 | } |
| 750 | 749 | ||
| 751 | static struct perf_file_handler file_handler = { | 750 | static struct perf_event_ops event_ops = { |
| 752 | .process_sample_event = process_sample_event, | 751 | .process_sample_event = process_sample_event, |
| 753 | .process_mmap_event = event__process_mmap, | 752 | .process_mmap_event = event__process_mmap, |
| 754 | .process_comm_event = process_comm_event, | 753 | .process_comm_event = process_comm_event, |
| @@ -776,9 +775,7 @@ static int __cmd_report(void) | |||
| 776 | if (show_threads) | 775 | if (show_threads) |
| 777 | perf_read_values_init(&show_threads_values); | 776 | perf_read_values_init(&show_threads_values); |
| 778 | 777 | ||
| 779 | register_perf_file_handler(&file_handler); | 778 | ret = perf_session__process_events(session, &event_ops, full_paths, |
| 780 | |||
| 781 | ret = perf_session__process_events(session, full_paths, | ||
| 782 | &event__cwdlen, &event__cwd); | 779 | &event__cwdlen, &event__cwd); |
| 783 | if (ret) | 780 | if (ret) |
| 784 | goto out_delete; | 781 | goto out_delete; |
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 48ab283ed86b..b5b447236261 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #include "util/trace-event.h" | 12 | #include "util/trace-event.h" |
| 13 | 13 | ||
| 14 | #include "util/debug.h" | 14 | #include "util/debug.h" |
| 15 | #include "util/data_map.h" | ||
| 16 | 15 | ||
| 17 | #include <sys/prctl.h> | 16 | #include <sys/prctl.h> |
| 18 | 17 | ||
| @@ -1656,7 +1655,7 @@ static int sample_type_check(u64 type) | |||
| 1656 | return 0; | 1655 | return 0; |
| 1657 | } | 1656 | } |
| 1658 | 1657 | ||
| 1659 | static struct perf_file_handler file_handler = { | 1658 | static struct perf_event_ops event_ops = { |
| 1660 | .process_sample_event = process_sample_event, | 1659 | .process_sample_event = process_sample_event, |
| 1661 | .process_comm_event = event__process_comm, | 1660 | .process_comm_event = event__process_comm, |
| 1662 | .process_lost_event = process_lost_event, | 1661 | .process_lost_event = process_lost_event, |
| @@ -1672,9 +1671,9 @@ static int read_events(void) | |||
| 1672 | return -ENOMEM; | 1671 | return -ENOMEM; |
| 1673 | 1672 | ||
| 1674 | register_idle_thread(); | 1673 | register_idle_thread(); |
| 1675 | register_perf_file_handler(&file_handler); | ||
| 1676 | 1674 | ||
| 1677 | err = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd); | 1675 | err = perf_session__process_events(session, &event_ops, 0, |
| 1676 | &event__cwdlen, &event__cwd); | ||
| 1678 | perf_session__delete(session); | 1677 | perf_session__delete(session); |
| 1679 | return err; | 1678 | return err; |
| 1680 | } | 1679 | } |
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index db6caae1a404..4b95cec6b4c5 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c | |||
| @@ -30,7 +30,7 @@ | |||
| 30 | #include "util/parse-options.h" | 30 | #include "util/parse-options.h" |
| 31 | #include "util/parse-events.h" | 31 | #include "util/parse-events.h" |
| 32 | #include "util/event.h" | 32 | #include "util/event.h" |
| 33 | #include "util/data_map.h" | 33 | #include "util/session.h" |
| 34 | #include "util/svghelper.h" | 34 | #include "util/svghelper.h" |
| 35 | 35 | ||
| 36 | static char const *input_name = "perf.data"; | 36 | static char const *input_name = "perf.data"; |
| @@ -1046,7 +1046,7 @@ static int sample_type_check(u64 type) | |||
| 1046 | return 0; | 1046 | return 0; |
| 1047 | } | 1047 | } |
| 1048 | 1048 | ||
| 1049 | static struct perf_file_handler file_handler = { | 1049 | static struct perf_event_ops event_ops = { |
| 1050 | .process_comm_event = process_comm_event, | 1050 | .process_comm_event = process_comm_event, |
| 1051 | .process_fork_event = process_fork_event, | 1051 | .process_fork_event = process_fork_event, |
| 1052 | .process_exit_event = process_exit_event, | 1052 | .process_exit_event = process_exit_event, |
| @@ -1062,9 +1062,8 @@ static int __cmd_timechart(void) | |||
| 1062 | if (session == NULL) | 1062 | if (session == NULL) |
| 1063 | return -ENOMEM; | 1063 | return -ENOMEM; |
| 1064 | 1064 | ||
| 1065 | register_perf_file_handler(&file_handler); | 1065 | ret = perf_session__process_events(session, &event_ops, 0, |
| 1066 | 1066 | &event__cwdlen, &event__cwd); | |
| 1067 | ret = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd); | ||
| 1068 | if (ret) | 1067 | if (ret) |
| 1069 | goto out_delete; | 1068 | goto out_delete; |
| 1070 | 1069 | ||
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 3057e1d387b9..c404dece950d 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
| @@ -57,7 +57,6 @@ static int cleanup_scripting(void) | |||
| 57 | #include "util/debug.h" | 57 | #include "util/debug.h" |
| 58 | 58 | ||
| 59 | #include "util/trace-event.h" | 59 | #include "util/trace-event.h" |
| 60 | #include "util/data_map.h" | ||
| 61 | #include "util/exec_cmd.h" | 60 | #include "util/exec_cmd.h" |
| 62 | 61 | ||
| 63 | static char const *input_name = "perf.data"; | 62 | static char const *input_name = "perf.data"; |
| @@ -118,7 +117,7 @@ static int sample_type_check(u64 type) | |||
| 118 | return 0; | 117 | return 0; |
| 119 | } | 118 | } |
| 120 | 119 | ||
| 121 | static struct perf_file_handler file_handler = { | 120 | static struct perf_event_ops event_ops = { |
| 122 | .process_sample_event = process_sample_event, | 121 | .process_sample_event = process_sample_event, |
| 123 | .process_comm_event = event__process_comm, | 122 | .process_comm_event = event__process_comm, |
| 124 | .sample_type_check = sample_type_check, | 123 | .sample_type_check = sample_type_check, |
| @@ -127,9 +126,8 @@ static struct perf_file_handler file_handler = { | |||
| 127 | static int __cmd_trace(struct perf_session *session) | 126 | static int __cmd_trace(struct perf_session *session) |
| 128 | { | 127 | { |
| 129 | register_idle_thread(); | 128 | register_idle_thread(); |
| 130 | register_perf_file_handler(&file_handler); | 129 | return perf_session__process_events(session, &event_ops, 0, |
| 131 | 130 | &event__cwdlen, &event__cwd); | |
| 132 | return perf_session__process_events(session, 0, &event__cwdlen, &event__cwd); | ||
| 133 | } | 131 | } |
| 134 | 132 | ||
| 135 | struct script_spec { | 133 | struct script_spec { |
diff --git a/tools/perf/util/data_map.c b/tools/perf/util/data_map.c index 22bcdfeff55c..ba5bcfa1f908 100644 --- a/tools/perf/util/data_map.c +++ b/tools/perf/util/data_map.c | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | #include "data_map.h" | ||
| 2 | #include "symbol.h" | 1 | #include "symbol.h" |
| 3 | #include "util.h" | 2 | #include "util.h" |
| 4 | #include "debug.h" | 3 | #include "debug.h" |
| 4 | #include "session.h" | ||
| 5 | 5 | ||
| 6 | |||
| 7 | static struct perf_file_handler *curr_handler; | ||
| 8 | static unsigned long mmap_window = 32; | 6 | static unsigned long mmap_window = 32; |
| 9 | static char __cwd[PATH_MAX]; | 7 | static char __cwd[PATH_MAX]; |
| 10 | 8 | ||
| @@ -15,7 +13,7 @@ static int process_event_stub(event_t *event __used, | |||
| 15 | return 0; | 13 | return 0; |
| 16 | } | 14 | } |
| 17 | 15 | ||
| 18 | void register_perf_file_handler(struct perf_file_handler *handler) | 16 | static void perf_event_ops__fill_defaults(struct perf_event_ops *handler) |
| 19 | { | 17 | { |
| 20 | if (!handler->process_sample_event) | 18 | if (!handler->process_sample_event) |
| 21 | handler->process_sample_event = process_event_stub; | 19 | handler->process_sample_event = process_event_stub; |
| @@ -35,8 +33,6 @@ void register_perf_file_handler(struct perf_file_handler *handler) | |||
| 35 | handler->process_throttle_event = process_event_stub; | 33 | handler->process_throttle_event = process_event_stub; |
| 36 | if (!handler->process_unthrottle_event) | 34 | if (!handler->process_unthrottle_event) |
| 37 | handler->process_unthrottle_event = process_event_stub; | 35 | handler->process_unthrottle_event = process_event_stub; |
| 38 | |||
| 39 | curr_handler = handler; | ||
| 40 | } | 36 | } |
| 41 | 37 | ||
| 42 | static const char *event__name[] = { | 38 | static const char *event__name[] = { |
| @@ -63,6 +59,7 @@ void event__print_totals(void) | |||
| 63 | } | 59 | } |
| 64 | 60 | ||
| 65 | static int process_event(event_t *event, struct perf_session *session, | 61 | static int process_event(event_t *event, struct perf_session *session, |
| 62 | struct perf_event_ops *ops, | ||
| 66 | unsigned long offset, unsigned long head) | 63 | unsigned long offset, unsigned long head) |
| 67 | { | 64 | { |
| 68 | trace_event(event); | 65 | trace_event(event); |
| @@ -78,25 +75,25 @@ static int process_event(event_t *event, struct perf_session *session, | |||
| 78 | 75 | ||
| 79 | switch (event->header.type) { | 76 | switch (event->header.type) { |
| 80 | case PERF_RECORD_SAMPLE: | 77 | case PERF_RECORD_SAMPLE: |
| 81 | return curr_handler->process_sample_event(event, session); | 78 | return ops->process_sample_event(event, session); |
| 82 | case PERF_RECORD_MMAP: | 79 | case PERF_RECORD_MMAP: |
| 83 | return curr_handler->process_mmap_event(event, session); | 80 | return ops->process_mmap_event(event, session); |
| 84 | case PERF_RECORD_COMM: | 81 | case PERF_RECORD_COMM: |
| 85 | return curr_handler->process_comm_event(event, session); | 82 | return ops->process_comm_event(event, session); |
| 86 | case PERF_RECORD_FORK: | 83 | case PERF_RECORD_FORK: |
| 87 | return curr_handler->process_fork_event(event, session); | 84 | return ops->process_fork_event(event, session); |
| 88 | case PERF_RECORD_EXIT: | 85 | case PERF_RECORD_EXIT: |
| 89 | return curr_handler->process_exit_event(event, session); | 86 | return ops->process_exit_event(event, session); |
| 90 | case PERF_RECORD_LOST: | 87 | case PERF_RECORD_LOST: |
| 91 | return curr_handler->process_lost_event(event, session); | 88 | return ops->process_lost_event(event, session); |
| 92 | case PERF_RECORD_READ: | 89 | case PERF_RECORD_READ: |
| 93 | return curr_handler->process_read_event(event, session); | 90 | return ops->process_read_event(event, session); |
| 94 | case PERF_RECORD_THROTTLE: | 91 | case PERF_RECORD_THROTTLE: |
| 95 | return curr_handler->process_throttle_event(event, session); | 92 | return ops->process_throttle_event(event, session); |
| 96 | case PERF_RECORD_UNTHROTTLE: | 93 | case PERF_RECORD_UNTHROTTLE: |
| 97 | return curr_handler->process_unthrottle_event(event, session); | 94 | return ops->process_unthrottle_event(event, session); |
| 98 | default: | 95 | default: |
| 99 | curr_handler->total_unknown++; | 96 | ops->total_unknown++; |
| 100 | return -1; | 97 | return -1; |
| 101 | } | 98 | } |
| 102 | } | 99 | } |
| @@ -131,6 +128,7 @@ out: | |||
| 131 | } | 128 | } |
| 132 | 129 | ||
| 133 | int perf_session__process_events(struct perf_session *self, | 130 | int perf_session__process_events(struct perf_session *self, |
| 131 | struct perf_event_ops *ops, | ||
| 134 | int full_paths, int *cwdlen, char **cwd) | 132 | int full_paths, int *cwdlen, char **cwd) |
| 135 | { | 133 | { |
| 136 | int err; | 134 | int err; |
| @@ -142,10 +140,7 @@ int perf_session__process_events(struct perf_session *self, | |||
| 142 | uint32_t size; | 140 | uint32_t size; |
| 143 | char *buf; | 141 | char *buf; |
| 144 | 142 | ||
| 145 | if (curr_handler == NULL) { | 143 | perf_event_ops__fill_defaults(ops); |
| 146 | pr_debug("Forgot to register perf file handler\n"); | ||
| 147 | return -EINVAL; | ||
| 148 | } | ||
| 149 | 144 | ||
| 150 | page_size = getpagesize(); | 145 | page_size = getpagesize(); |
| 151 | 146 | ||
| @@ -153,8 +148,8 @@ int perf_session__process_events(struct perf_session *self, | |||
| 153 | sample_type = perf_header__sample_type(&self->header); | 148 | sample_type = perf_header__sample_type(&self->header); |
| 154 | 149 | ||
| 155 | err = -EINVAL; | 150 | err = -EINVAL; |
| 156 | if (curr_handler->sample_type_check && | 151 | if (ops->sample_type_check && |
| 157 | curr_handler->sample_type_check(sample_type) < 0) | 152 | ops->sample_type_check(sample_type) < 0) |
| 158 | goto out_err; | 153 | goto out_err; |
| 159 | 154 | ||
| 160 | if (!full_paths) { | 155 | if (!full_paths) { |
| @@ -210,7 +205,7 @@ more: | |||
| 210 | (void *)(long)event->header.size, | 205 | (void *)(long)event->header.size, |
| 211 | event->header.type); | 206 | event->header.type); |
| 212 | 207 | ||
| 213 | if (!size || process_event(event, self, offset, head) < 0) { | 208 | if (!size || process_event(event, self, ops, offset, head) < 0) { |
| 214 | 209 | ||
| 215 | dump_printf("%p [%p]: skipping unknown header type: %d\n", | 210 | dump_printf("%p [%p]: skipping unknown header type: %d\n", |
| 216 | (void *)(offset + head), | 211 | (void *)(offset + head), |
diff --git a/tools/perf/util/data_map.h b/tools/perf/util/data_map.h deleted file mode 100644 index 6d4ae52bc07b..000000000000 --- a/tools/perf/util/data_map.h +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | #ifndef __PERF_DATAMAP_H | ||
| 2 | #define __PERF_DATAMAP_H | ||
| 3 | |||
| 4 | #include "event.h" | ||
| 5 | #include "header.h" | ||
| 6 | #include "session.h" | ||
| 7 | |||
| 8 | struct perf_session; | ||
| 9 | |||
| 10 | typedef int (*event_type_handler_t)(event_t *self, | ||
| 11 | struct perf_session *session); | ||
| 12 | |||
| 13 | struct perf_file_handler { | ||
| 14 | event_type_handler_t process_sample_event; | ||
| 15 | event_type_handler_t process_mmap_event; | ||
| 16 | event_type_handler_t process_comm_event; | ||
| 17 | event_type_handler_t process_fork_event; | ||
| 18 | event_type_handler_t process_exit_event; | ||
| 19 | event_type_handler_t process_lost_event; | ||
| 20 | event_type_handler_t process_read_event; | ||
| 21 | event_type_handler_t process_throttle_event; | ||
| 22 | event_type_handler_t process_unthrottle_event; | ||
| 23 | int (*sample_type_check)(u64 sample_type); | ||
| 24 | unsigned long total_unknown; | ||
| 25 | }; | ||
| 26 | |||
| 27 | void register_perf_file_handler(struct perf_file_handler *handler); | ||
| 28 | int perf_session__process_events(struct perf_session *self, | ||
| 29 | int full_paths, int *cwdlen, char **cwd); | ||
| 30 | int perf_header__read_build_ids(int input, u64 offset, u64 file_size); | ||
| 31 | |||
| 32 | #endif | ||
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index f2e8d8715111..8a0bca55106f 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
| @@ -8,8 +8,8 @@ | |||
| 8 | #include "header.h" | 8 | #include "header.h" |
| 9 | #include "../perf.h" | 9 | #include "../perf.h" |
| 10 | #include "trace-event.h" | 10 | #include "trace-event.h" |
| 11 | #include "session.h" | ||
| 11 | #include "symbol.h" | 12 | #include "symbol.h" |
| 12 | #include "data_map.h" | ||
| 13 | #include "debug.h" | 13 | #include "debug.h" |
| 14 | 14 | ||
| 15 | /* | 15 | /* |
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 707ce1cb1621..39766868d43a 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
| @@ -48,7 +48,8 @@ out_close: | |||
| 48 | return -1; | 48 | return -1; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | struct perf_session *perf_session__new(const char *filename, int mode, bool force) | 51 | struct perf_session *perf_session__new(const char *filename, int mode, |
| 52 | bool force) | ||
| 52 | { | 53 | { |
| 53 | size_t len = strlen(filename) + 1; | 54 | size_t len = strlen(filename) + 1; |
| 54 | struct perf_session *self = zalloc(sizeof(*self) + len); | 55 | struct perf_session *self = zalloc(sizeof(*self) + len); |
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h index f3699c8c8ed4..7a4c32c545f4 100644 --- a/tools/perf/util/session.h +++ b/tools/perf/util/session.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __PERF_SESSION_H | 1 | #ifndef __PERF_SESSION_H |
| 2 | #define __PERF_SESSION_H | 2 | #define __PERF_SESSION_H |
| 3 | 3 | ||
| 4 | #include "event.h" | ||
| 4 | #include "header.h" | 5 | #include "header.h" |
| 5 | 6 | ||
| 6 | struct perf_session { | 7 | struct perf_session { |
| @@ -10,7 +11,30 @@ struct perf_session { | |||
| 10 | char filename[0]; | 11 | char filename[0]; |
| 11 | }; | 12 | }; |
| 12 | 13 | ||
| 13 | struct perf_session *perf_session__new(const char *filename, int mode, bool force); | 14 | typedef int (*event_op)(event_t *self, struct perf_session *session); |
| 15 | |||
| 16 | struct perf_event_ops { | ||
| 17 | event_op process_sample_event; | ||
| 18 | event_op process_mmap_event; | ||
| 19 | event_op process_comm_event; | ||
| 20 | event_op process_fork_event; | ||
| 21 | event_op process_exit_event; | ||
| 22 | event_op process_lost_event; | ||
| 23 | event_op process_read_event; | ||
| 24 | event_op process_throttle_event; | ||
| 25 | event_op process_unthrottle_event; | ||
| 26 | int (*sample_type_check)(u64 sample_type); | ||
| 27 | unsigned long total_unknown; | ||
| 28 | }; | ||
| 29 | |||
| 30 | struct perf_session *perf_session__new(const char *filename, int mode, | ||
| 31 | bool force); | ||
| 14 | void perf_session__delete(struct perf_session *self); | 32 | void perf_session__delete(struct perf_session *self); |
| 15 | 33 | ||
| 34 | int perf_session__process_events(struct perf_session *self, | ||
| 35 | struct perf_event_ops *event_ops, | ||
| 36 | int full_paths, int *cwdlen, char **cwd); | ||
| 37 | |||
| 38 | int perf_header__read_build_ids(int input, u64 offset, u64 file_size); | ||
| 39 | |||
| 16 | #endif /* __PERF_SESSION_H */ | 40 | #endif /* __PERF_SESSION_H */ |
