1 #ifndef __PERF_SESSION_H
2 #define __PERF_SESSION_H
7 #include <linux/rbtree.h>
8 #include "../../../include/linux/perf_event.h"
15 struct perf_header header
;
17 unsigned long mmap_window
;
18 struct map_groups kmaps
;
19 struct rb_root threads
;
20 struct thread
*last_match
;
21 struct events_stats events_stats
;
22 unsigned long event_total
[PERF_RECORD_MAX
];
31 typedef int (*event_op
)(event_t
*self
, struct perf_session
*session
);
33 struct perf_event_ops
{
34 event_op process_sample_event
;
35 event_op process_mmap_event
;
36 event_op process_comm_event
;
37 event_op process_fork_event
;
38 event_op process_exit_event
;
39 event_op process_lost_event
;
40 event_op process_read_event
;
41 event_op process_throttle_event
;
42 event_op process_unthrottle_event
;
43 int (*sample_type_check
)(struct perf_session
*session
);
44 unsigned long total_unknown
;
48 struct perf_session
*perf_session__new(const char *filename
, int mode
, bool force
);
49 void perf_session__delete(struct perf_session
*self
);
51 int perf_session__process_events(struct perf_session
*self
,
52 struct perf_event_ops
*event_ops
);
54 struct symbol
**perf_session__resolve_callchain(struct perf_session
*self
,
55 struct thread
*thread
,
56 struct ip_callchain
*chain
,
57 struct symbol
**parent
);
59 int perf_header__read_build_ids(int input
, u64 offset
, u64 file_size
);
61 #endif /* __PERF_SESSION_H */