xref: /openbmc/linux/tools/perf/util/event.h (revision fd589a8f)
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 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
105