mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 10:04:12 +08:00
perf list: Add debug support for outputing alias string
For debugging and testing it is useful to see the converted alias string. Add support to perf stat/record and perf list to print the alias conversion. The text string is saved in the alias structure. For perf stat/record it is folded into the normal -v. For perf list -v was taken, so we use --debug. Before: % perf list ... cache: l1d.replacement [L1D data line replacements] l1d_pend_miss.fb_full [Cycles a demand request was blocked due to Fill Buffers inavailability] After % perf list --debug ... cache: l1d.replacement [L1D data line replacements] cpu/umask=0x1,period=2000003,event=0x51/ l1d_pend_miss.fb_full [Cycles a demand request was blocked due to Fill Buffers inavailability] cpu/umask=0x2,period=2000003,cmask=1,event=0x48/ Signed-off-by: Andi Kleen <ak@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Link: http://lkml.kernel.org/r/20170128020345.19007-6-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
231bb2aa32
commit
f23610245c
@ -14,6 +14,7 @@
|
||||
#include "util/parse-events.h"
|
||||
#include "util/cache.h"
|
||||
#include "util/pmu.h"
|
||||
#include "util/debug.h"
|
||||
#include <subcmd/parse-options.h>
|
||||
|
||||
static bool desc_flag = true;
|
||||
@ -29,6 +30,8 @@ int cmd_list(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
"Print extra event descriptions. --no-desc to not print."),
|
||||
OPT_BOOLEAN('v', "long-desc", &long_desc_flag,
|
||||
"Print longer event descriptions."),
|
||||
OPT_INCR(0, "debug", &verbose,
|
||||
"Enable debugging output"),
|
||||
OPT_END()
|
||||
};
|
||||
const char * const list_usage[] = {
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <linux/types.h>
|
||||
#include "util.h"
|
||||
#include "pmu.h"
|
||||
#include "debug.h"
|
||||
#include "parse-events.h"
|
||||
#include "parse-events-bison.h"
|
||||
|
||||
@ -254,6 +255,8 @@ PE_KERNEL_PMU_EVENT sep_dc
|
||||
|
||||
if (!parse_events_add_pmu(data, list,
|
||||
pmu->name, head)) {
|
||||
pr_debug("%s -> %s/%s/\n", $1,
|
||||
pmu->name, alias->str);
|
||||
ok++;
|
||||
}
|
||||
|
||||
|
@ -275,6 +275,8 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
|
||||
snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
|
||||
}
|
||||
alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1;
|
||||
alias->str = strdup(val);
|
||||
|
||||
list_add_tail(&alias->list, list);
|
||||
|
||||
return 0;
|
||||
@ -1087,6 +1089,8 @@ struct sevent {
|
||||
char *name;
|
||||
char *desc;
|
||||
char *topic;
|
||||
char *str;
|
||||
char *pmu;
|
||||
};
|
||||
|
||||
static int cmp_sevent(const void *a, const void *b)
|
||||
@ -1183,6 +1187,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
|
||||
aliases[j].desc = long_desc ? alias->long_desc :
|
||||
alias->desc;
|
||||
aliases[j].topic = alias->topic;
|
||||
aliases[j].str = alias->str;
|
||||
aliases[j].pmu = pmu->name;
|
||||
j++;
|
||||
}
|
||||
if (pmu->selectable &&
|
||||
@ -1217,6 +1223,8 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
|
||||
printf("%*s", 8, "[");
|
||||
wordwrap(aliases[j].desc, 8, columns, 0);
|
||||
printf("]\n");
|
||||
if (verbose)
|
||||
printf("%*s%s/%s/\n", 8, "", aliases[j].pmu, aliases[j].str);
|
||||
} else
|
||||
printf(" %-50s [Kernel PMU event]\n", aliases[j].name);
|
||||
printed++;
|
||||
|
@ -43,6 +43,7 @@ struct perf_pmu_alias {
|
||||
char *desc;
|
||||
char *long_desc;
|
||||
char *topic;
|
||||
char *str;
|
||||
struct list_head terms; /* HEAD struct parse_events_term -> list */
|
||||
struct list_head list; /* ELEM */
|
||||
char unit[UNIT_MAX_LEN+1];
|
||||
|
Loading…
Reference in New Issue
Block a user