blob: fa7c50b654e144ae4cc44c407891b798937f43a2 [file] [log] [blame]
Frederic Weisbecker66e274f2009-08-12 11:07:25 +02001#ifndef __PERF_EVENT_H
2#define __PERF_EVENT_H
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +02003#include "../perf.h"
Frederic Weisbecker66e274f2009-08-12 11:07:25 +02004#include "util.h"
5#include <linux/list.h>
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +02006
Peter Zijlstra18408dd2009-08-13 11:47:55 +02007/*
8 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
9 */
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020010struct ip_event {
11 struct perf_event_header header;
12 u64 ip;
13 u32 pid, tid;
14 unsigned char __more_data[];
15};
16
17struct mmap_event {
18 struct perf_event_header header;
19 u32 pid, tid;
20 u64 start;
21 u64 len;
22 u64 pgoff;
23 char filename[PATH_MAX];
24};
25
26struct comm_event {
27 struct perf_event_header header;
28 u32 pid, tid;
29 char comm[16];
30};
31
32struct fork_event {
33 struct perf_event_header header;
34 u32 pid, ppid;
35 u32 tid, ptid;
36};
37
38struct lost_event {
39 struct perf_event_header header;
40 u64 id;
41 u64 lost;
42};
43
Peter Zijlstra18408dd2009-08-13 11:47:55 +020044/*
45 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
46 */
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020047struct read_event {
48 struct perf_event_header header;
49 u32 pid,tid;
50 u64 value;
51 u64 time_enabled;
52 u64 time_running;
53 u64 id;
54};
55
56typedef union event_union {
57 struct perf_event_header header;
58 struct ip_event ip;
59 struct mmap_event mmap;
60 struct comm_event comm;
61 struct fork_event fork;
62 struct lost_event lost;
63 struct read_event read;
64} event_t;
Frederic Weisbecker66e274f2009-08-12 11:07:25 +020065
66struct map {
67 struct list_head node;
68 u64 start;
69 u64 end;
70 u64 pgoff;
71 u64 (*map_ip)(struct map *, u64);
72 struct dso *dso;
73};
74
75static inline u64 map__map_ip(struct map *map, u64 ip)
76{
77 return ip - map->start + map->pgoff;
78}
79
80static inline u64 vdso__map_ip(struct map *map __used, u64 ip)
81{
82 return ip;
83}
84
85struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen);
86struct map *map__clone(struct map *self);
87int map__overlap(struct map *l, struct map *r);
88size_t map__fprintf(struct map *self, FILE *fp);
89
90#endif