28a579f8fa8ece2de39d84f43378fd22da309cf7
[safe/jmp/linux-2.6] / tools / perf / util / event.h
1 #ifndef __PERF_EVENT_H
2 #define __PERF_EVENT_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 typedef union event_union {
64         struct perf_event_header        header;
65         struct ip_event                 ip;
66         struct mmap_event               mmap;
67         struct comm_event               comm;
68         struct fork_event               fork;
69         struct lost_event               lost;
70         struct read_event               read;
71 } event_t;
72
73 struct map {
74         struct list_head        node;
75         u64                     start;
76         u64                     end;
77         u64                     pgoff;
78         u64                     (*map_ip)(struct map *, u64);
79         struct dso              *dso;
80 };
81
82 static inline u64 map__map_ip(struct map *map, u64 ip)
83 {
84         return ip - map->start + map->pgoff;
85 }
86
87 static inline u64 vdso__map_ip(struct map *map __used, u64 ip)
88 {
89         return ip;
90 }
91
92 struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen);
93 struct map *map__clone(struct map *self);
94 int map__overlap(struct map *l, struct map *r);
95 size_t map__fprintf(struct map *self, FILE *fp);
96
97 #endif