parse-events.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #ifndef __PERF_PARSE_EVENTS_H
  2. #define __PERF_PARSE_EVENTS_H
  3. /*
  4. * Parse symbolic events/counts passed in as options:
  5. */
  6. #include <linux/list.h>
  7. #include <stdbool.h>
  8. #include "types.h"
  9. #include <linux/perf_event.h>
  10. #include "types.h"
  11. struct list_head;
  12. struct perf_evsel;
  13. struct perf_evlist;
  14. struct option;
  15. struct tracepoint_path {
  16. char *system;
  17. char *name;
  18. struct tracepoint_path *next;
  19. };
  20. extern struct tracepoint_path *tracepoint_id_to_path(u64 config);
  21. extern bool have_tracepoints(struct list_head *evlist);
  22. const char *event_type(int type);
  23. extern int parse_events_option(const struct option *opt, const char *str,
  24. int unset);
  25. extern int parse_events(struct perf_evlist *evlist, const char *str,
  26. int unset);
  27. extern int parse_events_terms(struct list_head *terms, const char *str);
  28. extern int parse_filter(const struct option *opt, const char *str, int unset);
  29. #define EVENTS_HELP_MAX (128*1024)
  30. enum {
  31. PARSE_EVENTS__TERM_TYPE_NUM,
  32. PARSE_EVENTS__TERM_TYPE_STR,
  33. };
  34. enum {
  35. PARSE_EVENTS__TERM_TYPE_USER,
  36. PARSE_EVENTS__TERM_TYPE_CONFIG,
  37. PARSE_EVENTS__TERM_TYPE_CONFIG1,
  38. PARSE_EVENTS__TERM_TYPE_CONFIG2,
  39. PARSE_EVENTS__TERM_TYPE_NAME,
  40. PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD,
  41. PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE,
  42. };
  43. struct parse_events__term {
  44. char *config;
  45. union {
  46. char *str;
  47. u64 num;
  48. } val;
  49. int type_val;
  50. int type_term;
  51. struct list_head list;
  52. };
  53. struct parse_events_data__events {
  54. struct list_head list;
  55. int idx;
  56. };
  57. struct parse_events_data__terms {
  58. struct list_head *terms;
  59. };
  60. int parse_events__is_hardcoded_term(struct parse_events__term *term);
  61. int parse_events__term_num(struct parse_events__term **_term,
  62. int type_term, char *config, u64 num);
  63. int parse_events__term_str(struct parse_events__term **_term,
  64. int type_term, char *config, char *str);
  65. int parse_events__term_sym_hw(struct parse_events__term **term,
  66. char *config, unsigned idx);
  67. int parse_events__term_clone(struct parse_events__term **new,
  68. struct parse_events__term *term);
  69. void parse_events__free_terms(struct list_head *terms);
  70. int parse_events__modifier_event(struct list_head *list, char *str, bool add);
  71. int parse_events__modifier_group(struct list_head *list, char *event_mod);
  72. int parse_events_name(struct list_head *list, char *name);
  73. int parse_events_add_tracepoint(struct list_head **list, int *idx,
  74. char *sys, char *event);
  75. int parse_events_add_numeric(struct list_head **list, int *idx,
  76. u32 type, u64 config,
  77. struct list_head *head_config);
  78. int parse_events_add_cache(struct list_head **list, int *idx,
  79. char *type, char *op_result1, char *op_result2);
  80. int parse_events_add_breakpoint(struct list_head **list, int *idx,
  81. void *ptr, char *type);
  82. int parse_events_add_pmu(struct list_head **list, int *idx,
  83. char *pmu , struct list_head *head_config);
  84. void parse_events__set_leader(char *name, struct list_head *list);
  85. void parse_events_update_lists(struct list_head *list_event,
  86. struct list_head *list_all);
  87. void parse_events_error(void *data, void *scanner, char const *msg);
  88. void print_events(const char *event_glob, bool name_only);
  89. void print_events_type(u8 type);
  90. void print_tracepoint_events(const char *subsys_glob, const char *event_glob,
  91. bool name_only);
  92. int print_hwcache_events(const char *event_glob, bool name_only);
  93. extern int is_valid_tracepoint(const char *event_string);
  94. extern int valid_debugfs_mount(const char *debugfs);
  95. #endif /* __PERF_PARSE_EVENTS_H */