aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2012-07-03 18:00:43 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-07-05 10:29:56 -0400
commitcf3506dcc4a855d11af20bcb271ac921033ba0de (patch)
treec7c0261f08a6dcbf4a4caea7425d2033ff844f96 /tools
parent8c5f0a84c6b16e04195001bfd78281909519cf09 (diff)
perf tools: Split out PE_VALUE_SYM parsing token to SW and HW tokens
Spliting PE_VALUE_SYM token to PE_VALUE_SYM_HW and PE_VALUE_SYM_SW tokens to separate hardware and software symbols. This will be useful in upcomming patch where we want to be able to parse out only hardware events. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1341352848-11833-6-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/parse-events.l2
-rw-r--r--tools/perf/util/parse-events.y15
2 files changed, 12 insertions, 5 deletions
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 6cbe092e6c3b..384ca74c6b22 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -56,7 +56,7 @@ static int sym(yyscan_t scanner, int type, int config)
56 YYSTYPE *yylval = parse_events_get_lval(scanner); 56 YYSTYPE *yylval = parse_events_get_lval(scanner);
57 57
58 yylval->num = (type << 16) + config; 58 yylval->num = (type << 16) + config;
59 return PE_VALUE_SYM; 59 return type == PERF_TYPE_HARDWARE ? PE_VALUE_SYM_HW : PE_VALUE_SYM_SW;
60} 60}
61 61
62static int term(yyscan_t scanner, int type) 62static int term(yyscan_t scanner, int type)
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 9525c455d27f..2bc5fbff2b5d 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -26,14 +26,15 @@ do { \
26%} 26%}
27 27
28%token PE_START_EVENTS PE_START_TERMS 28%token PE_START_EVENTS PE_START_TERMS
29%token PE_VALUE PE_VALUE_SYM PE_RAW PE_TERM 29%token PE_VALUE PE_VALUE_SYM_HW PE_VALUE_SYM_SW PE_RAW PE_TERM
30%token PE_NAME 30%token PE_NAME
31%token PE_MODIFIER_EVENT PE_MODIFIER_BP 31%token PE_MODIFIER_EVENT PE_MODIFIER_BP
32%token PE_NAME_CACHE_TYPE PE_NAME_CACHE_OP_RESULT 32%token PE_NAME_CACHE_TYPE PE_NAME_CACHE_OP_RESULT
33%token PE_PREFIX_MEM PE_PREFIX_RAW 33%token PE_PREFIX_MEM PE_PREFIX_RAW
34%token PE_ERROR 34%token PE_ERROR
35%type <num> PE_VALUE 35%type <num> PE_VALUE
36%type <num> PE_VALUE_SYM 36%type <num> PE_VALUE_SYM_HW
37%type <num> PE_VALUE_SYM_SW
37%type <num> PE_RAW 38%type <num> PE_RAW
38%type <num> PE_TERM 39%type <num> PE_TERM
39%type <str> PE_NAME 40%type <str> PE_NAME
@@ -41,6 +42,7 @@ do { \
41%type <str> PE_NAME_CACHE_OP_RESULT 42%type <str> PE_NAME_CACHE_OP_RESULT
42%type <str> PE_MODIFIER_EVENT 43%type <str> PE_MODIFIER_EVENT
43%type <str> PE_MODIFIER_BP 44%type <str> PE_MODIFIER_BP
45%type <num> value_sym
44%type <head> event_config 46%type <head> event_config
45%type <term> event_term 47%type <term> event_term
46%type <head> event_pmu 48%type <head> event_pmu
@@ -109,8 +111,13 @@ PE_NAME '/' event_config '/'
109 $$ = list; 111 $$ = list;
110} 112}
111 113
114value_sym:
115PE_VALUE_SYM_HW
116|
117PE_VALUE_SYM_SW
118
112event_legacy_symbol: 119event_legacy_symbol:
113PE_VALUE_SYM '/' event_config '/' 120value_sym '/' event_config '/'
114{ 121{
115 struct parse_events_data__events *data = _data; 122 struct parse_events_data__events *data = _data;
116 struct list_head *list = NULL; 123 struct list_head *list = NULL;
@@ -123,7 +130,7 @@ PE_VALUE_SYM '/' event_config '/'
123 $$ = list; 130 $$ = list;
124} 131}
125| 132|
126PE_VALUE_SYM sep_slash_dc 133value_sym sep_slash_dc
127{ 134{
128 struct parse_events_data__events *data = _data; 135 struct parse_events_data__events *data = _data;
129 struct list_head *list = NULL; 136 struct list_head *list = NULL;