diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /tools/perf/util/header.h | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'tools/perf/util/header.h')
-rw-r--r-- | tools/perf/util/header.h | 83 |
1 files changed, 64 insertions, 19 deletions
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h index a0761bc7863c..82a6af72d4cc 100644 --- a/tools/perf/util/header.h +++ b/tools/perf/util/header.h | |||
@@ -1,9 +1,13 @@ | |||
1 | #ifndef _PERF_HEADER_H | 1 | #ifndef __PERF_HEADER_H |
2 | #define _PERF_HEADER_H | 2 | #define __PERF_HEADER_H |
3 | 3 | ||
4 | #include "../../../include/linux/perf_event.h" | 4 | #include "../../../include/linux/perf_event.h" |
5 | #include <sys/types.h> | 5 | #include <sys/types.h> |
6 | #include <stdbool.h> | ||
6 | #include "types.h" | 7 | #include "types.h" |
8 | #include "event.h" | ||
9 | |||
10 | #include <linux/bitmap.h> | ||
7 | 11 | ||
8 | struct perf_header_attr { | 12 | struct perf_header_attr { |
9 | struct perf_event_attr attr; | 13 | struct perf_event_attr attr; |
@@ -12,36 +16,77 @@ struct perf_header_attr { | |||
12 | off_t id_offset; | 16 | off_t id_offset; |
13 | }; | 17 | }; |
14 | 18 | ||
19 | enum { | ||
20 | HEADER_TRACE_INFO = 1, | ||
21 | HEADER_BUILD_ID, | ||
22 | HEADER_LAST_FEATURE, | ||
23 | }; | ||
24 | |||
25 | #define HEADER_FEAT_BITS 256 | ||
26 | |||
27 | struct perf_file_section { | ||
28 | u64 offset; | ||
29 | u64 size; | ||
30 | }; | ||
31 | |||
32 | struct perf_file_header { | ||
33 | u64 magic; | ||
34 | u64 size; | ||
35 | u64 attr_size; | ||
36 | struct perf_file_section attrs; | ||
37 | struct perf_file_section data; | ||
38 | struct perf_file_section event_types; | ||
39 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); | ||
40 | }; | ||
41 | |||
42 | struct perf_header; | ||
43 | |||
44 | int perf_file_header__read(struct perf_file_header *self, | ||
45 | struct perf_header *ph, int fd); | ||
46 | |||
15 | struct perf_header { | 47 | struct perf_header { |
16 | int frozen; | 48 | int frozen; |
17 | int attrs, size; | 49 | int attrs, size; |
18 | struct perf_header_attr **attr; | 50 | struct perf_header_attr **attr; |
19 | s64 attr_offset; | 51 | s64 attr_offset; |
20 | u64 data_offset; | 52 | u64 data_offset; |
21 | u64 data_size; | 53 | u64 data_size; |
22 | u64 event_offset; | 54 | u64 event_offset; |
23 | u64 event_size; | 55 | u64 event_size; |
56 | bool needs_swap; | ||
57 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); | ||
24 | }; | 58 | }; |
25 | 59 | ||
26 | struct perf_header *perf_header__read(int fd); | 60 | int perf_header__init(struct perf_header *self); |
27 | void perf_header__write(struct perf_header *self, int fd); | 61 | void perf_header__exit(struct perf_header *self); |
62 | |||
63 | int perf_header__read(struct perf_header *self, int fd); | ||
64 | int perf_header__write(struct perf_header *self, int fd, bool at_exit); | ||
28 | 65 | ||
29 | void perf_header__add_attr(struct perf_header *self, | 66 | int perf_header__add_attr(struct perf_header *self, |
30 | struct perf_header_attr *attr); | 67 | struct perf_header_attr *attr); |
31 | 68 | ||
32 | void perf_header__push_event(u64 id, const char *name); | 69 | int perf_header__push_event(u64 id, const char *name); |
33 | char *perf_header__find_event(u64 id); | 70 | char *perf_header__find_event(u64 id); |
34 | 71 | ||
72 | struct perf_header_attr *perf_header_attr__new(struct perf_event_attr *attr); | ||
73 | void perf_header_attr__delete(struct perf_header_attr *self); | ||
35 | 74 | ||
36 | struct perf_header_attr * | 75 | int perf_header_attr__add_id(struct perf_header_attr *self, u64 id); |
37 | perf_header_attr__new(struct perf_event_attr *attr); | ||
38 | void perf_header_attr__add_id(struct perf_header_attr *self, u64 id); | ||
39 | 76 | ||
40 | u64 perf_header__sample_type(struct perf_header *header); | 77 | u64 perf_header__sample_type(struct perf_header *header); |
41 | struct perf_event_attr * | 78 | struct perf_event_attr * |
42 | perf_header__find_attr(u64 id, struct perf_header *header); | 79 | perf_header__find_attr(u64 id, struct perf_header *header); |
80 | void perf_header__set_feat(struct perf_header *self, int feat); | ||
81 | bool perf_header__has_feat(const struct perf_header *self, int feat); | ||
43 | 82 | ||
83 | int perf_header__process_sections(struct perf_header *self, int fd, | ||
84 | int (*process)(struct perf_file_section *self, | ||
85 | struct perf_header *ph, | ||
86 | int feat, int fd)); | ||
44 | 87 | ||
45 | struct perf_header *perf_header__new(void); | 88 | int build_id_cache__add_s(const char *sbuild_id, const char *debugdir, |
89 | const char *name, bool is_kallsyms); | ||
90 | int build_id_cache__remove_s(const char *sbuild_id, const char *debugdir); | ||
46 | 91 | ||
47 | #endif /* _PERF_HEADER_H */ | 92 | #endif /* __PERF_HEADER_H */ |