perf report: Generalize perf_session__fprintf_hists()
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / tools / perf / util / session.h
blob32eaa1bada062a108ddaebed928489b5bf3d5da6
1 #ifndef __PERF_SESSION_H
2 #define __PERF_SESSION_H
4 #include "event.h"
5 #include "header.h"
6 #include "thread.h"
7 #include <linux/rbtree.h>
8 #include "../../../include/linux/perf_event.h"
10 struct ip_callchain;
11 struct thread;
12 struct symbol;
14 struct perf_session {
15 struct perf_header header;
16 unsigned long size;
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];
23 struct rb_root hists;
24 u64 sample_type;
25 int fd;
26 int cwdlen;
27 char *cwd;
28 char filename[0];
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;
45 bool full_paths;
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 */