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 }; 43 44 struct lost_event { 45 struct perf_event_header header; 46 u64 id; 47 u64 lost; 48 }; 49 50 /* 51 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID 52 */ 53 struct read_event { 54 struct perf_event_header header; 55 u32 pid,tid; 56 u64 value; 57 u64 time_enabled; 58 u64 time_running; 59 u64 id; 60 }; 61 62 typedef union event_union { 63 struct perf_event_header header; 64 struct ip_event ip; 65 struct mmap_event mmap; 66 struct comm_event comm; 67 struct fork_event fork; 68 struct lost_event lost; 69 struct read_event read; 70 } event_t; 71 72 struct map { 73 struct list_head node; 74 u64 start; 75 u64 end; 76 u64 pgoff; 77 u64 (*map_ip)(struct map *, u64); 78 struct dso *dso; 79 }; 80 81 static inline u64 map__map_ip(struct map *map, u64 ip) 82 { 83 return ip - map->start + map->pgoff; 84 } 85 86 static inline u64 vdso__map_ip(struct map *map __used, u64 ip) 87 { 88 return ip; 89 } 90 91 struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen); 92 struct map *map__clone(struct map *self); 93 int map__overlap(struct map *l, struct map *r); 94 size_t map__fprintf(struct map *self, FILE *fp); 95 96 #endif 97