• J
    perf tools: Add parser generator for events parsing · 89812fc8
    Jiri Olsa 提交于
    Changing event parsing to use flex/bison parse generator.
    The event syntax stays as it was.
    
    grammar description:
    
    events: events ',' event | event
    
    event:  event_def PE_MODIFIER_EVENT | event_def
    
    event_def: event_legacy_symbol sep_dc     |
               event_legacy_cache sep_dc      |
               event_legacy_breakpoint sep_dc |
               event_legacy_tracepoint sep_dc |
               event_legacy_numeric sep_dc    |
               event_legacy_raw sep_dc
    
    event_legacy_symbol:      PE_NAME_SYM
    
    event_legacy_cache:       PE_NAME_CACHE_TYPE '-' PE_NAME_CACHE_OP_RESULT '-' PE_NAME_CACHE_OP_RESULT |
                              PE_NAME_CACHE_TYPE '-' PE_NAME_CACHE_OP_RESULT  |
                              PE_NAME_CACHE_TYPE
    
    event_legacy_raw:         PE_SEP_RAW PE_VALUE
    
    event_legacy_numeric:     PE_VALUE ':' PE_VALUE
    
    event_legacy_breakpoint:  PE_SEP_BP ':' PE_VALUE ':' PE_MODIFIER_BP
    
    event_breakpoint_type:    PE_MODIFIER_BPTYPE | empty
    
    PE_NAME_SYM:              cpu-cycles|cycles                              |
                              stalled-cycles-frontend|idle-cycles-frontend   |
                              stalled-cycles-backend|idle-cycles-backend     |
                              instructions                                   |
                              cache-references                               |
                              cache-misses                                   |
                              branch-instructions|branches                   |
                              branch-misses                                  |
                              bus-cycles                                     |
                              cpu-clock                                      |
                              task-clock                                     |
                              page-faults|faults                             |
                              minor-faults                                   |
                              major-faults                                   |
                              context-switches|cs                            |
                              cpu-migrations|migrations                      |
                              alignment-faults                               |
                              emulation-faults
    
    PE_NAME_CACHE_TYPE:       L1-dcache|l1-d|l1d|L1-data             |
                              L1-icache|l1-i|l1i|L1-instruction      |
                              LLC|L2                                 |
                              dTLB|d-tlb|Data-TLB                    |
                              iTLB|i-tlb|Instruction-TLB             |
                              branch|branches|bpu|btb|bpc            |
                              node
    
    PE_NAME_CACHE_OP_RESULT:  load|loads|read                        |
                              store|stores|write                     |
                              prefetch|prefetches                    |
                              speculative-read|speculative-load      |
                              refs|Reference|ops|access              |
                              misses|miss
    
    PE_MODIFIER_EVENT:        [ukhp]{0,5}
    
    PE_MODIFIER_BP:           [rwx]
    
    PE_SEP_BP:                'mem'
    
    PE_SEP_RAW:               'r'
    
    sep_dc:                   ':' |
    
    Added flex/bison files for event grammar parsing. The generated
    parser is part of the patch. Added makefile rule 'event-parser'
    to generate the parser code out of the bison/flex sources.
    Acked-by: NPeter Zijlstra <peterz@infradead.org>
    Signed-off-by: NJiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/n/tip-u4pfig5waq3ll2bfcdex8fgi@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    89812fc8
parse-events.c 21.5 KB