blob: 28a579f8fa8ece2de39d84f43378fd22da309cf7 [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
Frederic Weisbecker0f25bfc2009-08-16 19:56:54 +02007enum {
8 SHOW_KERNEL = 1,
9 SHOW_USER = 2,
10 SHOW_HV = 4,
11};
12
Peter Zijlstra18408dd2009-08-13 11:47:55 +020013/*
14 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
15 */
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020016struct ip_event {
17 struct perf_event_header header;
18 u64 ip;
19 u32 pid, tid;
20 unsigned char __more_data[];
21};
22
23struct 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
32struct comm_event {
33 struct perf_event_header header;
34 u32 pid, tid;
35 char comm[16];
36};
37
38struct fork_event {
39 struct perf_event_header header;
40 u32 pid, ppid;
41 u32 tid, ptid;
Arjan van de Ven393b2ad2009-09-12 07:52:47 +020042 u64 time;
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020043};
44
45struct lost_event {
46 struct perf_event_header header;
47 u64 id;
48 u64 lost;
49};
50
Peter Zijlstra18408dd2009-08-13 11:47:55 +020051/*
52 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
53 */
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020054struct read_event {
55 struct perf_event_header header;
Ingo Molnardc02bf72009-09-16 13:45:00 +020056 u32 pid, tid;
Frederic Weisbecker1fe2c102009-08-12 10:19:53 +020057 u64 value;
58 u64 time_enabled;
59 u64 time_running;
60 u64 id;
61};
62
63typedef 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;
Frederic Weisbecker66e274f2009-08-12 11:07:25 +020072
73struct 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
82static inline u64 map__map_ip(struct map *map, u64 ip)
83{
84 return ip - map->start + map->pgoff;
85}
86
87static inline u64 vdso__map_ip(struct map *map __used, u64 ip)
88{
89 return ip;
90}
91
92struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen);
93struct map *map__clone(struct map *self);
94int map__overlap(struct map *l, struct map *r);
95size_t map__fprintf(struct map *self, FILE *fp);
96
97#endif