2009-12-12 02:24:02 +03:00
# ifndef __PERF_SESSION_H
# define __PERF_SESSION_H
2009-12-14 00:50:25 +03:00
# include "event.h"
2009-12-12 02:24:02 +03:00
# include "header.h"
2009-12-14 00:50:28 +03:00
# include <linux/rbtree.h>
struct thread ;
2009-12-12 02:24:02 +03:00
struct perf_session {
struct perf_header header ;
unsigned long size ;
2009-12-14 00:50:27 +03:00
unsigned long mmap_window ;
2009-12-14 00:50:28 +03:00
struct rb_root threads ;
struct thread * last_match ;
2009-12-12 02:24:02 +03:00
int fd ;
2009-12-14 00:50:27 +03:00
int cwdlen ;
char * cwd ;
2009-12-12 02:24:02 +03:00
char filename [ 0 ] ;
} ;
2009-12-14 00:50:25 +03:00
typedef int ( * event_op ) ( event_t * self , struct perf_session * session ) ;
struct perf_event_ops {
event_op process_sample_event ;
event_op process_mmap_event ;
event_op process_comm_event ;
event_op process_fork_event ;
event_op process_exit_event ;
event_op process_lost_event ;
event_op process_read_event ;
event_op process_throttle_event ;
event_op process_unthrottle_event ;
int ( * sample_type_check ) ( u64 sample_type ) ;
unsigned long total_unknown ;
2009-12-14 00:50:27 +03:00
bool full_paths ;
2009-12-14 00:50:25 +03:00
} ;
struct perf_session * perf_session__new ( const char * filename , int mode ,
bool force ) ;
2009-12-12 02:24:02 +03:00
void perf_session__delete ( struct perf_session * self ) ;
2009-12-14 00:50:25 +03:00
int perf_session__process_events ( struct perf_session * self ,
2009-12-14 00:50:27 +03:00
struct perf_event_ops * event_ops ) ;
2009-12-14 00:50:25 +03:00
int perf_header__read_build_ids ( int input , u64 offset , u64 file_size ) ;
2009-12-12 02:24:02 +03:00
# endif /* __PERF_SESSION_H */