• Jin Yao's avatar
    perf script python: Add more PMU fields to event handler dict · 48a1f565
    Jin Yao authored
    When doing pmu sampling and then running a script with perf script -s
    script.py, the process_event function gets dictionary with some fields
    from the perf ring buffer (like ip, sym, callchain etc).
    
    But we miss quite a few fields we report now, for example, LBRs, data
    source, weight, transaction, iregs, uregs, etc.
    
    This patch reports these fields for perf script python processing.
    
      New keys/items:
      ---------------
      key  : brstack
      items: from, to, from_dsoname, to_dsoname, mispred,
             predicted, in_tx, abort, cycles.
    
      key  : brstacksym
      items: from, to, pred, in_tx, abort (converted string)
    
      key  : datasrc
      key  : datasrc_decode (decoded string)
      key  : iregs
      key  : uregs
      key  : weight
      key  : transaction
    
      v2:
      ---
      Add new fields for dso.
      Use PyBool_FromLong() for mispred/predicted/in_tx/abort
    
    Committer notes:
    
    !sym->name isn't valid, as its not a pointer, its a [0] array, use
    !sym->name[0] instead, guaranteed to be the case by symbol__new.
    
    This was caught by just one of the containers:
    
      52    54.22 ubuntu:17.04                  : FAIL gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
    
        CC       /tmp/build/perf/util/scripting-engines/trace-event-python.o
      util/scripting-engines/trace-event-python.c:534:20: error: address of array 'sym->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
              if (!sym || !sym->name)
                        ~~~~~~^~~~
      1 error generated.
      mv: cannot stat '/tmp/build/perf/util/scripting-engines/.trace-event-python.o.tmp': No such file or directory
      /git/linux/tools/build/Makefile.build:96: recipe for target '/tmp/build/perf/util/scripting-engines/trace-event-python.o' failed
      make[5]: *** [/tmp/build/perf/util/scripting-engines/trace-event-python.o] Error 1
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1527843663-32288-3-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    48a1f565
trace-event-python.c 45.6 KB