blob: 1e0da9ca31aa0bdd0812420020654fba5487d44a [file] [log] [blame]
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -02001#ifndef __PERF_SESSION_H
2#define __PERF_SESSION_H
3
Arnaldo Carvalho de Melo301a0b02009-12-13 19:50:25 -02004#include "event.h"
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -02005#include "header.h"
6
7struct perf_session {
8 struct perf_header header;
9 unsigned long size;
Arnaldo Carvalho de Meloec913362009-12-13 19:50:27 -020010 unsigned long mmap_window;
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -020011 int fd;
Arnaldo Carvalho de Meloec913362009-12-13 19:50:27 -020012 int cwdlen;
13 char *cwd;
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -020014 char filename[0];
15};
16
Arnaldo Carvalho de Melo301a0b02009-12-13 19:50:25 -020017typedef int (*event_op)(event_t *self, struct perf_session *session);
18
19struct perf_event_ops {
20 event_op process_sample_event;
21 event_op process_mmap_event;
22 event_op process_comm_event;
23 event_op process_fork_event;
24 event_op process_exit_event;
25 event_op process_lost_event;
26 event_op process_read_event;
27 event_op process_throttle_event;
28 event_op process_unthrottle_event;
29 int (*sample_type_check)(u64 sample_type);
30 unsigned long total_unknown;
Arnaldo Carvalho de Meloec913362009-12-13 19:50:27 -020031 bool full_paths;
Arnaldo Carvalho de Melo301a0b02009-12-13 19:50:25 -020032};
33
34struct perf_session *perf_session__new(const char *filename, int mode,
35 bool force);
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -020036void perf_session__delete(struct perf_session *self);
37
Arnaldo Carvalho de Melo301a0b02009-12-13 19:50:25 -020038int perf_session__process_events(struct perf_session *self,
Arnaldo Carvalho de Meloec913362009-12-13 19:50:27 -020039 struct perf_event_ops *event_ops);
Arnaldo Carvalho de Melo301a0b02009-12-13 19:50:25 -020040
41int perf_header__read_build_ids(int input, u64 offset, u64 file_size);
42
Arnaldo Carvalho de Melo94c744b2009-12-11 21:24:02 -020043#endif /* __PERF_SESSION_H */