Commit | Line | Data |
---|---|---|
8b40f521 JK |
1 | #ifndef __PERF_HEADER_H |
2 | #define __PERF_HEADER_H | |
7c6a1c65 | 3 | |
cdd6c482 | 4 | #include "../../../include/linux/perf_event.h" |
7c6a1c65 | 5 | #include <sys/types.h> |
8d06367f | 6 | #include <stdbool.h> |
7c6a1c65 PZ |
7 | #include "types.h" |
8 | ||
db9f11e3 FW |
9 | #include <linux/bitmap.h> |
10 | ||
7c6a1c65 | 11 | struct perf_header_attr { |
cdd6c482 | 12 | struct perf_event_attr attr; |
7c6a1c65 PZ |
13 | int ids, size; |
14 | u64 *id; | |
15 | off_t id_offset; | |
16 | }; | |
17 | ||
2ba08250 | 18 | #define HEADER_TRACE_INFO 1 |
8d06367f | 19 | #define HEADER_BUILD_ID 2 |
2ba08250 FW |
20 | |
21 | #define HEADER_FEAT_BITS 256 | |
22 | ||
7c6a1c65 | 23 | struct perf_header { |
2ba08250 FW |
24 | int frozen; |
25 | int attrs, size; | |
7c6a1c65 | 26 | struct perf_header_attr **attr; |
2ba08250 FW |
27 | s64 attr_offset; |
28 | u64 data_offset; | |
29 | u64 data_size; | |
30 | u64 event_offset; | |
31 | u64 event_size; | |
db9f11e3 | 32 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); |
7c6a1c65 PZ |
33 | }; |
34 | ||
35 | struct perf_header *perf_header__read(int fd); | |
8671dab9 | 36 | void perf_header__write(struct perf_header *self, int fd, bool at_exit); |
7c6a1c65 PZ |
37 | |
38 | void perf_header__add_attr(struct perf_header *self, | |
39 | struct perf_header_attr *attr); | |
40 | ||
8755a8f2 AV |
41 | void perf_header__push_event(u64 id, const char *name); |
42 | char *perf_header__find_event(u64 id); | |
43 | ||
44 | ||
7c6a1c65 | 45 | struct perf_header_attr * |
cdd6c482 | 46 | perf_header_attr__new(struct perf_event_attr *attr); |
7c6a1c65 PZ |
47 | void perf_header_attr__add_id(struct perf_header_attr *self, u64 id); |
48 | ||
0d3a5c88 | 49 | u64 perf_header__sample_type(struct perf_header *header); |
cdd6c482 | 50 | struct perf_event_attr * |
0d3a5c88 | 51 | perf_header__find_attr(u64 id, struct perf_header *header); |
8d06367f ACM |
52 | void perf_header__set_feat(struct perf_header *self, int feat); |
53 | bool perf_header__has_feat(const struct perf_header *self, int feat); | |
7c6a1c65 PZ |
54 | |
55 | struct perf_header *perf_header__new(void); | |
56 | ||
8b40f521 | 57 | #endif /* __PERF_HEADER_H */ |