2009-09-24 18:02:18 +02:00
# ifndef __PERF_PARSE_EVENTS_H
# define __PERF_PARSE_EVENTS_H
2009-05-26 09:17:18 +02:00
/*
* Parse symbolic events / counts passed in as options :
*/
2012-05-21 09:12:49 +02:00
# include <linux/list.h>
2012-04-05 18:26:25 +02:00
# include <stdbool.h>
2012-05-21 09:12:49 +02:00
# include "types.h"
2011-01-04 16:30:01 +02:00
# include "../../../include/linux/perf_event.h"
2012-04-05 18:26:25 +02:00
# include "types.h"
2011-01-03 16:39:04 -02:00
struct list_head ;
struct perf_evsel ;
2011-07-14 11:25:32 +02:00
struct perf_evlist ;
2011-01-03 16:39:04 -02:00
2009-07-21 14:16:29 -04:00
struct option ;
2009-08-28 03:09:58 +02:00
struct tracepoint_path {
char * system ;
char * name ;
struct tracepoint_path * next ;
} ;
extern struct tracepoint_path * tracepoint_id_to_path ( u64 config ) ;
2011-01-22 19:12:38 -02:00
extern bool have_tracepoints ( struct list_head * evlist ) ;
2009-08-28 03:09:58 +02:00
2011-03-09 22:23:28 -07:00
const char * event_type ( int type ) ;
2011-01-03 16:39:04 -02:00
const char * event_name ( struct perf_evsel * event ) ;
2009-08-15 12:26:57 +02:00
extern const char * __event_name ( int type , u64 config ) ;
2009-05-26 11:10:09 +02:00
2011-07-14 11:25:32 +02:00
extern int parse_events_option ( const struct option * opt , const char * str ,
int unset ) ;
extern int parse_events ( struct perf_evlist * evlist , const char * str ,
int unset ) ;
2009-10-15 11:22:07 +08:00
extern int parse_filter ( const struct option * opt , const char * str , int unset ) ;
2009-05-26 11:10:09 +02:00
# define EVENTS_HELP_MAX (128*1024)
2012-03-15 20:09:16 +01:00
enum {
2012-04-25 18:24:57 +02:00
PARSE_EVENTS__TERM_TYPE_NUM ,
PARSE_EVENTS__TERM_TYPE_STR ,
} ;
enum {
PARSE_EVENTS__TERM_TYPE_USER ,
2012-03-15 20:09:16 +01:00
PARSE_EVENTS__TERM_TYPE_CONFIG ,
PARSE_EVENTS__TERM_TYPE_CONFIG1 ,
PARSE_EVENTS__TERM_TYPE_CONFIG2 ,
PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD ,
PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE ,
} ;
struct parse_events__term {
char * config ;
union {
char * str ;
long num ;
} val ;
2012-04-25 18:24:57 +02:00
int type_val ;
int type_term ;
2012-03-15 20:09:16 +01:00
struct list_head list ;
} ;
int parse_events__is_hardcoded_term ( struct parse_events__term * term ) ;
2012-04-25 18:24:57 +02:00
int parse_events__term_num ( struct parse_events__term * * _term ,
int type_term , char * config , long num ) ;
int parse_events__term_str ( struct parse_events__term * * _term ,
int type_term , char * config , char * str ) ;
2012-03-15 20:09:16 +01:00
void parse_events__free_terms ( struct list_head * terms ) ;
2012-03-15 20:09:15 +01:00
int parse_events_modifier ( struct list_head * list __used , char * str __used ) ;
int parse_events_add_tracepoint ( struct list_head * list , int * idx ,
char * sys , char * event ) ;
int parse_events_add_raw ( struct perf_evlist * evlist , unsigned long config ,
unsigned long config1 , unsigned long config2 ,
char * mod ) ;
int parse_events_add_numeric ( struct list_head * list , int * idx ,
2012-03-15 20:09:16 +01:00
unsigned long type , unsigned long config ,
struct list_head * head_config ) ;
2012-03-15 20:09:15 +01:00
int parse_events_add_cache ( struct list_head * list , int * idx ,
char * type , char * op_result1 , char * op_result2 ) ;
int parse_events_add_breakpoint ( struct list_head * list , int * idx ,
void * ptr , char * type ) ;
2012-03-15 20:09:18 +01:00
int parse_events_add_pmu ( struct list_head * list , int * idx ,
char * pmu , struct list_head * head_config ) ;
2012-03-20 19:15:40 +01:00
void parse_events_update_lists ( struct list_head * list_event ,
struct list_head * list_all ) ;
void parse_events_error ( struct list_head * list_all ,
struct list_head * list_event ,
int * idx , char const * msg ) ;
2012-05-21 09:12:49 +02:00
int parse_events__test ( void ) ;
2012-03-15 20:09:15 +01:00
2011-02-17 15:38:58 -02:00
void print_events ( const char * event_glob ) ;
void print_events_type ( u8 type ) ;
void print_tracepoint_events ( const char * subsys_glob , const char * event_glob ) ;
int print_hwcache_events ( const char * event_glob ) ;
2011-01-03 17:50:45 +01:00
extern int is_valid_tracepoint ( const char * event_string ) ;
2009-05-26 11:10:09 +02:00
2009-07-21 14:16:29 -04:00
extern int valid_debugfs_mount ( const char * debugfs ) ;
2009-09-24 18:02:18 +02:00
# endif /* __PERF_PARSE_EVENTS_H */