1 #ifndef __PERF_RECORD_H
2 #define __PERF_RECORD_H
6 #include <linux/list.h>
7 #include <linux/rbtree.h>
10 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
13 struct perf_event_header header
;
16 unsigned char __more_data
[];
20 struct perf_event_header header
;
25 char filename
[PATH_MAX
];
29 struct perf_event_header header
;
35 struct perf_event_header header
;
42 struct perf_event_header header
;
48 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
51 struct perf_event_header header
;
60 struct perf_event_header header
;
73 struct ip_callchain
*callchain
;
78 #define BUILD_ID_SIZE 20
80 struct build_id_event
{
81 struct perf_event_header header
;
82 u8 build_id
[ALIGN(BUILD_ID_SIZE
, sizeof(u64
))];
86 typedef union event_union
{
87 struct perf_event_header header
;
89 struct mmap_event mmap
;
90 struct comm_event comm
;
91 struct fork_event fork
;
92 struct lost_event lost
;
93 struct read_event read
;
94 struct sample_event sample
;
102 void event__print_totals(void);
109 #define MAP__NR_TYPES (MAP__VARIABLE + 1)
113 struct rb_node rb_node
;
114 struct list_head node
;
120 u64 (*map_ip
)(struct map
*, u64
);
121 u64 (*unmap_ip
)(struct map
*, u64
);
125 static inline u64
map__map_ip(struct map
*map
, u64 ip
)
127 return ip
- map
->start
+ map
->pgoff
;
130 static inline u64
map__unmap_ip(struct map
*map
, u64 ip
)
132 return ip
+ map
->start
- map
->pgoff
;
135 static inline u64
identity__map_ip(struct map
*map __used
, u64 ip
)
142 typedef int (*symbol_filter_t
)(struct map
*map
, struct symbol
*sym
);
144 void map__init(struct map
*self
, enum map_type type
,
145 u64 start
, u64 end
, u64 pgoff
, struct dso
*dso
);
146 struct map
*map__new(struct mmap_event
*event
, enum map_type
,
147 char *cwd
, int cwdlen
);
148 void map__delete(struct map
*self
);
149 struct map
*map__clone(struct map
*self
);
150 int map__overlap(struct map
*l
, struct map
*r
);
151 size_t map__fprintf(struct map
*self
, FILE *fp
);
152 struct symbol
*map__find_symbol(struct map
*self
, u64 addr
,
153 symbol_filter_t filter
);
154 struct symbol
*map__find_symbol_by_name(struct map
*self
, const char *name
,
155 symbol_filter_t filter
);
156 void map__fixup_start(struct map
*self
);
157 void map__fixup_end(struct map
*self
);
159 int event__synthesize_thread(pid_t pid
, int (*process
)(event_t
*event
));
160 void event__synthesize_threads(int (*process
)(event_t
*event
));
162 extern char *event__cwd
;
163 extern int event__cwdlen
;
164 extern struct events_stats event__stats
;
165 extern unsigned long event__total
[PERF_RECORD_MAX
];
167 int event__process_comm(event_t
*self
);
168 int event__process_lost(event_t
*self
);
169 int event__process_mmap(event_t
*self
);
170 int event__process_task(event_t
*self
);
172 struct addr_location
;
173 int event__preprocess_sample(const event_t
*self
, struct addr_location
*al
,
174 symbol_filter_t filter
);
175 int event__parse_sample(event_t
*event
, u64 type
, struct sample_data
*data
);
177 #endif /* __PERF_RECORD_H */