]> Pileus Git - ~andy/linux/blob - tools/perf/util/event.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs...
[~andy/linux] / tools / perf / util / event.h
1 #ifndef __PERF_RECORD_H
2 #define __PERF_RECORD_H
3 #include "../perf.h"
4 #include "util.h"
5 #include <linux/list.h>
6
7 enum {
8         SHOW_KERNEL     = 1,
9         SHOW_USER       = 2,
10         SHOW_HV         = 4,
11 };
12
13 /*
14  * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
15  */
16 struct ip_event {
17         struct perf_event_header header;
18         u64 ip;
19         u32 pid, tid;
20         unsigned char __more_data[];
21 };
22
23 struct mmap_event {
24         struct perf_event_header header;
25         u32 pid, tid;
26         u64 start;
27         u64 len;
28         u64 pgoff;
29         char filename[PATH_MAX];
30 };
31
32 struct comm_event {
33         struct perf_event_header header;
34         u32 pid, tid;
35         char comm[16];
36 };
37
38 struct fork_event {
39         struct perf_event_header header;
40         u32 pid, ppid;
41         u32 tid, ptid;
42         u64 time;
43 };
44
45 struct lost_event {
46         struct perf_event_header header;
47         u64 id;
48         u64 lost;
49 };
50
51 /*
52  * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
53  */
54 struct read_event {
55         struct perf_event_header header;
56         u32 pid, tid;
57         u64 value;
58         u64 time_enabled;
59         u64 time_running;
60         u64 id;
61 };
62
63 struct sample_event{
64         struct perf_event_header        header;
65         u64 array[];
66 };
67
68
69 typedef union event_union {
70         struct perf_event_header        header;
71         struct ip_event                 ip;
72         struct mmap_event               mmap;
73         struct comm_event               comm;
74         struct fork_event               fork;
75         struct lost_event               lost;
76         struct read_event               read;
77         struct sample_event             sample;
78 } event_t;
79
80 struct map {
81         struct list_head        node;
82         u64                     start;
83         u64                     end;
84         u64                     pgoff;
85         u64                     (*map_ip)(struct map *, u64);
86         struct dso              *dso;
87 };
88
89 static inline u64 map__map_ip(struct map *map, u64 ip)
90 {
91         return ip - map->start + map->pgoff;
92 }
93
94 static inline u64 vdso__map_ip(struct map *map __used, u64 ip)
95 {
96         return ip;
97 }
98
99 struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen);
100 struct map *map__clone(struct map *self);
101 int map__overlap(struct map *l, struct map *r);
102 size_t map__fprintf(struct map *self, FILE *fp);
103
104 #endif