@@ -113,12 +113,12 @@ do { \
113113 yyless (0 ); \
114114} while (0 )
115115
116- static int sym (yyscan_t scanner, int config)
116+ static int sym (yyscan_t scanner, int type, int config)
117117{
118118 YYSTYPE *yylval = parse_events_get_lval (scanner);
119119
120- yylval->num = config;
121- return PE_VALUE_SYM_SW;
120+ yylval->num = (type << 16 ) + config;
121+ return type == PERF_TYPE_HARDWARE ? PE_VALUE_SYM_HW : PE_VALUE_SYM_SW;
122122}
123123
124124static int tool (yyscan_t scanner, enum perf_tool_event event)
@@ -137,13 +137,13 @@ static int term(yyscan_t scanner, enum parse_events__term_type type)
137137 return PE_TERM;
138138}
139139
140- static int hw (yyscan_t scanner, int config)
140+ static int hw_term (yyscan_t scanner, int config)
141141{
142142 YYSTYPE *yylval = parse_events_get_lval (scanner);
143143 char *text = parse_events_get_text (scanner);
144144
145- yylval->hardware_event .str = strdup (text);
146- yylval->hardware_event .num = config;
145+ yylval->hardware_term .str = strdup (text);
146+ yylval->hardware_term .num = PERF_TYPE_HARDWARE + config;
147147 return PE_TERM_HW;
148148}
149149
@@ -330,16 +330,16 @@ percore { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_PERCORE); }
330330aux-output { return term (yyscanner, PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT); }
331331aux-sample-size { return term (yyscanner, PARSE_EVENTS__TERM_TYPE_AUX_SAMPLE_SIZE); }
332332metric-id { return term (yyscanner, PARSE_EVENTS__TERM_TYPE_METRIC_ID); }
333- cpu-cycles| cycles { return hw (yyscanner, PERF_COUNT_HW_CPU_CYCLES); }
334- stalled-cycles-frontend| idle-cycles-frontend { return hw (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND); }
335- stalled-cycles-backend| idle-cycles-backend { return hw (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_BACKEND); }
336- instructions { return hw (yyscanner, PERF_COUNT_HW_INSTRUCTIONS); }
337- cache-references { return hw (yyscanner, PERF_COUNT_HW_CACHE_REFERENCES); }
338- cache-misses { return hw (yyscanner, PERF_COUNT_HW_CACHE_MISSES); }
339- branch-instructions| branches { return hw (yyscanner, PERF_COUNT_HW_BRANCH_INSTRUCTIONS); }
340- branch-misses { return hw (yyscanner, PERF_COUNT_HW_BRANCH_MISSES); }
341- bus-cycles { return hw (yyscanner, PERF_COUNT_HW_BUS_CYCLES); }
342- ref-cycles { return hw (yyscanner, PERF_COUNT_HW_REF_CPU_CYCLES); }
333+ cpu-cycles| cycles { return hw_term (yyscanner, PERF_COUNT_HW_CPU_CYCLES); }
334+ stalled-cycles-frontend| idle-cycles-frontend { return hw_term (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND); }
335+ stalled-cycles-backend| idle-cycles-backend { return hw_term (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_BACKEND); }
336+ instructions { return hw_term (yyscanner, PERF_COUNT_HW_INSTRUCTIONS); }
337+ cache-references { return hw_term (yyscanner, PERF_COUNT_HW_CACHE_REFERENCES); }
338+ cache-misses { return hw_term (yyscanner, PERF_COUNT_HW_CACHE_MISSES); }
339+ branch-instructions| branches { return hw_term (yyscanner, PERF_COUNT_HW_BRANCH_INSTRUCTIONS); }
340+ branch-misses { return hw_term (yyscanner, PERF_COUNT_HW_BRANCH_MISSES); }
341+ bus-cycles { return hw_term (yyscanner, PERF_COUNT_HW_BUS_CYCLES); }
342+ ref-cycles { return hw_term (yyscanner, PERF_COUNT_HW_REF_CPU_CYCLES); }
343343r{num_raw_hex } { return str (yyscanner, PE_RAW); }
344344r0x{num_raw_hex } { return str (yyscanner, PE_RAW); }
345345, { return ' ,' ; }
@@ -383,31 +383,31 @@ r0x{num_raw_hex} { return str(yyscanner, PE_RAW); }
383383<<EOF>> { BEGIN (INITIAL); }
384384}
385385
386- cpu-cycles| cycles { return hw (yyscanner, PERF_COUNT_HW_CPU_CYCLES); }
387- stalled-cycles-frontend| idle-cycles-frontend { return hw (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND); }
388- stalled-cycles-backend| idle-cycles-backend { return hw (yyscanner, PERF_COUNT_HW_STALLED_CYCLES_BACKEND); }
389- instructions { return hw (yyscanner, PERF_COUNT_HW_INSTRUCTIONS); }
390- cache-references { return hw (yyscanner, PERF_COUNT_HW_CACHE_REFERENCES); }
391- cache-misses { return hw (yyscanner, PERF_COUNT_HW_CACHE_MISSES); }
392- branch-instructions| branches { return hw (yyscanner, PERF_COUNT_HW_BRANCH_INSTRUCTIONS); }
393- branch-misses { return hw (yyscanner, PERF_COUNT_HW_BRANCH_MISSES); }
394- bus-cycles { return hw (yyscanner, PERF_COUNT_HW_BUS_CYCLES); }
395- ref-cycles { return hw (yyscanner, PERF_COUNT_HW_REF_CPU_CYCLES); }
396- cpu-clock { return sym (yyscanner, PERF_COUNT_SW_CPU_CLOCK); }
397- task-clock { return sym (yyscanner, PERF_COUNT_SW_TASK_CLOCK); }
398- page-faults| faults { return sym (yyscanner, PERF_COUNT_SW_PAGE_FAULTS); }
399- minor-faults { return sym (yyscanner, PERF_COUNT_SW_PAGE_FAULTS_MIN); }
400- major-faults { return sym (yyscanner, PERF_COUNT_SW_PAGE_FAULTS_MAJ); }
401- context-switches| cs { return sym (yyscanner, PERF_COUNT_SW_CONTEXT_SWITCHES); }
402- cpu-migrations| migrations { return sym (yyscanner, PERF_COUNT_SW_CPU_MIGRATIONS); }
403- alignment-faults { return sym (yyscanner, PERF_COUNT_SW_ALIGNMENT_FAULTS); }
404- emulation-faults { return sym (yyscanner, PERF_COUNT_SW_EMULATION_FAULTS); }
405- dummy { return sym (yyscanner, PERF_COUNT_SW_DUMMY); }
386+ cpu-cycles| cycles { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_CPU_CYCLES); }
387+ stalled-cycles-frontend| idle-cycles-frontend { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_STALLED_CYCLES_FRONTEND); }
388+ stalled-cycles-backend| idle-cycles-backend { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_STALLED_CYCLES_BACKEND); }
389+ instructions { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_INSTRUCTIONS); }
390+ cache-references { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_CACHE_REFERENCES); }
391+ cache-misses { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_CACHE_MISSES); }
392+ branch-instructions| branches { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_BRANCH_INSTRUCTIONS); }
393+ branch-misses { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_BRANCH_MISSES); }
394+ bus-cycles { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_BUS_CYCLES); }
395+ ref-cycles { return sym (yyscanner, PERF_TYPE_HARDWARE , PERF_COUNT_HW_REF_CPU_CYCLES); }
396+ cpu-clock { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK); }
397+ task-clock { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_TASK_CLOCK); }
398+ page-faults| faults { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS); }
399+ minor-faults { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MIN); }
400+ major-faults { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MAJ); }
401+ context-switches| cs { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES); }
402+ cpu-migrations| migrations { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS); }
403+ alignment-faults { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_ALIGNMENT_FAULTS); }
404+ emulation-faults { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_EMULATION_FAULTS); }
405+ dummy { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_DUMMY); }
406406duration_time { return tool (yyscanner, PERF_TOOL_DURATION_TIME); }
407407user_time { return tool (yyscanner, PERF_TOOL_USER_TIME); }
408408system_time { return tool (yyscanner, PERF_TOOL_SYSTEM_TIME); }
409- bpf-output { return sym (yyscanner, PERF_COUNT_SW_BPF_OUTPUT); }
410- cgroup-switches { return sym (yyscanner, PERF_COUNT_SW_CGROUP_SWITCHES); }
409+ bpf-output { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_BPF_OUTPUT); }
410+ cgroup-switches { return sym (yyscanner, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CGROUP_SWITCHES); }
411411
412412{lc_type } { return str (yyscanner, PE_LEGACY_CACHE); }
413413{lc_type }-{lc_op_result } { return str (yyscanner, PE_LEGACY_CACHE); }
0 commit comments