perf script: Align event name properly
Adding code to align event names, so we get aligned output in case of multiple events with different names. Before: $ perf script :13757 13757 163918.230829: cpu/mem-snp-none/P: ffff88085f20d010 :13757 13757 163918.230832: cpu/mem-loads,ldlat=30/P: 7f5a5f719f00 :13757 13757 163918.230835: cpu/mem-loads,ldlat=30/P: 7f5a5f719f00 :13758 13758 163918.230838: cpu/mem-snp-none/P: ffff88085f4ad810 :13758 13758 163918.154093: cpu/mem-stores/P: ffff88085bb53f28 :13757 13757 163918.155264: cpu/mem-snp-hitm/P: 601080 ... After: $ perf script :13757 13757 163918.228831: cpu/mem-snp-none/P: ffffffff81a841c0 :13757 13757 163918.228834: cpu/mem-loads,ldlat=30/P: 7f5a5f719f08 :13757 13757 163918.228837: cpu/mem-loads,ldlat=30/P: 7f5a5f719f08 :13758 13758 163918.228837: cpu/mem-snp-none/P: ffff88085f4ad800 :13758 13758 163918.154093: cpu/mem-stores/P: ffff88085bb53f28 :13757 13757 163918.155264: cpu/mem-snp-hitm/P: 601080 ... Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: David Ahern <dsahern@gmail.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Noel Grandin <noelgrandin@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1452158050-28061-9-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
2d7c03e6b0
commit
9cdbc40962
|
@ -617,9 +617,24 @@ struct perf_script {
|
||||||
bool allocated;
|
bool allocated;
|
||||||
struct cpu_map *cpus;
|
struct cpu_map *cpus;
|
||||||
struct thread_map *threads;
|
struct thread_map *threads;
|
||||||
|
int name_width;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void process_event(struct perf_script *script __maybe_unused, union perf_event *event,
|
static int perf_evlist__max_name_len(struct perf_evlist *evlist)
|
||||||
|
{
|
||||||
|
struct perf_evsel *evsel;
|
||||||
|
int max = 0;
|
||||||
|
|
||||||
|
evlist__for_each(evlist, evsel) {
|
||||||
|
int len = strlen(perf_evsel__name(evsel));
|
||||||
|
|
||||||
|
max = MAX(len, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void process_event(struct perf_script *script, union perf_event *event,
|
||||||
struct perf_sample *sample, struct perf_evsel *evsel,
|
struct perf_sample *sample, struct perf_evsel *evsel,
|
||||||
struct addr_location *al)
|
struct addr_location *al)
|
||||||
{
|
{
|
||||||
|
@ -636,7 +651,12 @@ static void process_event(struct perf_script *script __maybe_unused, union perf_
|
||||||
|
|
||||||
if (PRINT_FIELD(EVNAME)) {
|
if (PRINT_FIELD(EVNAME)) {
|
||||||
const char *evname = perf_evsel__name(evsel);
|
const char *evname = perf_evsel__name(evsel);
|
||||||
printf("%s: ", evname ? evname : "[unknown]");
|
|
||||||
|
if (!script->name_width)
|
||||||
|
script->name_width = perf_evlist__max_name_len(script->session->evlist);
|
||||||
|
|
||||||
|
printf("%*s: ", script->name_width,
|
||||||
|
evname ? evname : "[unknown]");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (print_flags)
|
if (print_flags)
|
||||||
|
|
Loading…
Reference in New Issue