• Ian Rogers's avatar
    perf parse-events: Improvements to modifier parsing · e30a7912
    Ian Rogers authored
    Use a struct/bitmap rather than a copied string from lexer.
    
    In lexer give improved error message when too many precise flags are
    given or repeated modifiers.
    
    Before:
    
      $ perf stat -e 'cycles:kuk' true
      event syntax error: 'cycles:kuk'
                                  \___ Bad modifier
      ...
      $ perf stat -e 'cycles:pppp' true
      event syntax error: 'cycles:pppp'
                                  \___ Bad modifier
      ...
      $ perf stat -e '{instructions:p,cycles:pp}:pp' -a true
      event syntax error: '..cycles:pp}:pp'
                                        \___ Bad modifier
      ...
    
    After:
    
      $ perf stat -e 'cycles:kuk' true
      event syntax error: 'cycles:kuk'
                                    \___ Duplicate modifier 'k' (kernel)
      ...
      $ perf stat -e 'cycles:pppp' true
      event syntax error: 'cycles:pppp'
                                     \___ Maximum precise value is 3
      ...
      $ perf stat -e '{instructions:p,cycles:pp}:pp' true
      event syntax error: '..cycles:pp}:pp'
                                        \___ Maximum combined precise value is 3, adding precision to "cycles:pp"
      ...
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Tested-by: default avatarAtish Patra <atishp@rivosinc.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Beeman Strong <beeman@rivosinc.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20240416061533.921723-14-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e30a7912
parse-events.h 9.48 KB