@@ -113,12 +113,12 @@ do { \
113
113
yyless (0 ); \
114
114
} while (0 )
115
115
116
- static int sym (yyscan_t scanner, int config)
116
+ static int sym (yyscan_t scanner, int type, int config)
117
117
{
118
118
YYSTYPE *yylval = parse_events_get_lval (scanner);
119
119
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;
122
122
}
123
123
124
124
static 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)
137
137
return PE_TERM;
138
138
}
139
139
140
- static int hw (yyscan_t scanner, int config)
140
+ static int hw_term (yyscan_t scanner, int config)
141
141
{
142
142
YYSTYPE *yylval = parse_events_get_lval (scanner);
143
143
char *text = parse_events_get_text (scanner);
144
144
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;
147
147
return PE_TERM_HW;
148
148
}
149
149
@@ -330,16 +330,16 @@ percore { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_PERCORE); }
330
330
aux-output { return term (yyscanner, PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT); }
331
331
aux-sample-size { return term (yyscanner, PARSE_EVENTS__TERM_TYPE_AUX_SAMPLE_SIZE); }
332
332
metric-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); }
343
343
r{num_raw_hex } { return str (yyscanner, PE_RAW); }
344
344
r0x{num_raw_hex } { return str (yyscanner, PE_RAW); }
345
345
, { return ' ,' ; }
@@ -383,31 +383,31 @@ r0x{num_raw_hex} { return str(yyscanner, PE_RAW); }
383
383
<<EOF>> { BEGIN (INITIAL); }
384
384
}
385
385
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); }
406
406
duration_time { return tool (yyscanner, PERF_TOOL_DURATION_TIME); }
407
407
user_time { return tool (yyscanner, PERF_TOOL_USER_TIME); }
408
408
system_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); }
411
411
412
412
{lc_type } { return str (yyscanner, PE_LEGACY_CACHE); }
413
413
{lc_type }-{lc_op_result } { return str (yyscanner, PE_LEGACY_CACHE); }
0 commit comments