diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-03-10 09:15:54 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-03-10 09:15:54 -0500 |
commit | a91e5431d54f5359fccb5ec2512f252eb217707e (patch) | |
tree | 8f8ba4940d9f4e910b339baee13a710baa920378 /tools/perf/util/header.h | |
parent | 6547250381eb315acff3d52b4872ad775359407c (diff) |
perf session: Use evlist/evsel for managing perf.data attributes
So that we can reuse things like the id to attr lookup routine
(perf_evlist__id2evsel) that uses a hash table instead of the linear
lookup done in the older perf_header_attr routines, etc.
Also to make evsels/evlist more pervasive an API, simplyfing using the
emerging perf lib.
cc: Arun Sharma <arun@sharma-home.net>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/header.h')
-rw-r--r-- | tools/perf/util/header.h | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h index 2fab13348aab..4cc267559bb6 100644 --- a/tools/perf/util/header.h +++ b/tools/perf/util/header.h | |||
@@ -9,13 +9,6 @@ | |||
9 | 9 | ||
10 | #include <linux/bitmap.h> | 10 | #include <linux/bitmap.h> |
11 | 11 | ||
12 | struct perf_header_attr { | ||
13 | struct perf_event_attr attr; | ||
14 | int ids, size; | ||
15 | u64 *id; | ||
16 | off_t id_offset; | ||
17 | }; | ||
18 | |||
19 | enum { | 12 | enum { |
20 | HEADER_TRACE_INFO = 1, | 13 | HEADER_TRACE_INFO = 1, |
21 | HEADER_BUILD_ID, | 14 | HEADER_BUILD_ID, |
@@ -51,9 +44,7 @@ int perf_file_header__read(struct perf_file_header *self, | |||
51 | 44 | ||
52 | struct perf_header { | 45 | struct perf_header { |
53 | int frozen; | 46 | int frozen; |
54 | int attrs, size; | ||
55 | bool needs_swap; | 47 | bool needs_swap; |
56 | struct perf_header_attr **attr; | ||
57 | s64 attr_offset; | 48 | s64 attr_offset; |
58 | u64 data_offset; | 49 | u64 data_offset; |
59 | u64 data_size; | 50 | u64 data_size; |
@@ -62,29 +53,19 @@ struct perf_header { | |||
62 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); | 53 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); |
63 | }; | 54 | }; |
64 | 55 | ||
65 | int perf_header__init(struct perf_header *self); | ||
66 | void perf_header__exit(struct perf_header *self); | ||
67 | |||
68 | struct perf_evlist; | 56 | struct perf_evlist; |
69 | 57 | ||
70 | int perf_header__read(struct perf_session *session, int fd); | 58 | int perf_session__read_header(struct perf_session *session, int fd); |
71 | int perf_header__write(struct perf_header *self, struct perf_evlist *evlist, | 59 | int perf_session__write_header(struct perf_session *session, |
72 | int fd, bool at_exit); | 60 | struct perf_evlist *evlist, |
61 | int fd, bool at_exit); | ||
73 | int perf_header__write_pipe(int fd); | 62 | int perf_header__write_pipe(int fd); |
74 | 63 | ||
75 | int perf_header__add_attr(struct perf_header *self, | ||
76 | struct perf_header_attr *attr); | ||
77 | |||
78 | int perf_header__push_event(u64 id, const char *name); | 64 | int perf_header__push_event(u64 id, const char *name); |
79 | char *perf_header__find_event(u64 id); | 65 | char *perf_header__find_event(u64 id); |
80 | 66 | ||
81 | struct perf_header_attr *perf_header_attr__new(struct perf_event_attr *attr); | 67 | u64 perf_evlist__sample_type(struct perf_evlist *evlist); |
82 | void perf_header_attr__delete(struct perf_header_attr *self); | 68 | bool perf_evlist__sample_id_all(const struct perf_evlist *evlist); |
83 | |||
84 | int perf_header_attr__add_id(struct perf_header_attr *self, u64 id); | ||
85 | |||
86 | u64 perf_header__sample_type(struct perf_header *header); | ||
87 | bool perf_header__sample_id_all(const struct perf_header *header); | ||
88 | void perf_header__set_feat(struct perf_header *self, int feat); | 69 | void perf_header__set_feat(struct perf_header *self, int feat); |
89 | void perf_header__clear_feat(struct perf_header *self, int feat); | 70 | void perf_header__clear_feat(struct perf_header *self, int feat); |
90 | bool perf_header__has_feat(const struct perf_header *self, int feat); | 71 | bool perf_header__has_feat(const struct perf_header *self, int feat); |
@@ -101,9 +82,8 @@ int build_id_cache__remove_s(const char *sbuild_id, const char *debugdir); | |||
101 | int perf_event__synthesize_attr(struct perf_event_attr *attr, u16 ids, u64 *id, | 82 | int perf_event__synthesize_attr(struct perf_event_attr *attr, u16 ids, u64 *id, |
102 | perf_event__handler_t process, | 83 | perf_event__handler_t process, |
103 | struct perf_session *session); | 84 | struct perf_session *session); |
104 | int perf_event__synthesize_attrs(struct perf_header *self, | 85 | int perf_session__synthesize_attrs(struct perf_session *session, |
105 | perf_event__handler_t process, | 86 | perf_event__handler_t process); |
106 | struct perf_session *session); | ||
107 | int perf_event__process_attr(union perf_event *event, struct perf_session *session); | 87 | int perf_event__process_attr(union perf_event *event, struct perf_session *session); |
108 | 88 | ||
109 | int perf_event__synthesize_event_type(u64 event_id, char *name, | 89 | int perf_event__synthesize_event_type(u64 event_id, char *name, |