[tip:perf/core] perf list: Support matching by topic

From: tip-bot for Andi Kleen
Date: Fri Oct 28 2016 - 13:47:25 EST


Commit-ID: 67bdc35fb48c97502dd4b9eeac561e4bcc18684b
Gitweb: http://git.kernel.org/tip/67bdc35fb48c97502dd4b9eeac561e4bcc18684b
Author: Andi Kleen <ak@xxxxxxxxxxxxxxx>
AuthorDate: Wed, 19 Oct 2016 11:45:23 -0700
Committer: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
CommitDate: Fri, 28 Oct 2016 11:29:42 -0200

perf list: Support matching by topic

Add support in perf list topic to only show events belonging to a
specific vendor events topic. For example the following works now:

% perf list frontend
List of pre-defined events (to be used in -e):

stalled-cycles-frontend OR idle-cycles-frontend [Hardware event]

stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]

frontend:
dsb2mite_switches.count
[Decode Stream Buffer (DSB)-to-MITE switches]
dsb2mite_switches.penalty_cycles
[Decode Stream Buffer (DSB)-to-MITE switch true penalty cycles]
dsb_fill.exceed_dsb_lines
[Cycles when Decode Stream Buffer (DSB) fill encounter more than 3 Decode Stream Buffer (DSB)
lines]
icache.hit
[Number of Instruction Cache, Streaming Buffer and Victim Cache Reads. both cacheable and
noncacheable, including UC fetches]
...

Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
Tested-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Link: http://lkml.kernel.org/r/1476902724-9586-2-git-send-email-andi@xxxxxxxxxxxxxx
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/perf/util/pmu.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 31b845e..dc6ccaa 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -1141,7 +1141,9 @@ void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag,
if (event_glob != NULL &&
!(strglobmatch_nocase(name, event_glob) ||
(!is_cpu && strglobmatch_nocase(alias->name,
- event_glob))))
+ event_glob)) ||
+ (alias->topic &&
+ strglobmatch_nocase(alias->topic, event_glob))))
continue;

if (is_cpu && !name_only && !alias->desc)