perf list: Honour 'event_glob' whem printing selectable PMUs
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 2 Oct 2015 18:28:16 +0000 (15:28 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 2 Oct 2015 18:28:16 +0000 (15:28 -0300)
Some PMUs, like the 'intel_bts' one can be used as an event name, i.e.:

$ perf record -e intel_bts:// usleep 1

Is a valid event name.

But the code printing such PMUs was not honouring the 'event_glob'
parameter, so the following line was always appearing:

  $ intel_bts//                                        [Kernel PMU event]

Fix it:

  $ [acme@felicio linux]$ perf list data

  List of pre-defined events (to be used in -e):

    uncore_imc/data_reads/                             [Kernel PMU event]
    uncore_imc/data_writes/                            [Kernel PMU event]

  $

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-ajb71858n7q7ao77b8pyy74w@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/pmu.c

index 41a356ba3cfe8474b88b7343bdccd928843e2961..e4b173dec4b9978cb3d1eb53c3569277c5110714 100644 (file)
@@ -1008,7 +1008,8 @@ void print_pmu_events(const char *event_glob, bool name_only)
                                goto out_enomem;
                        j++;
                }
-               if (pmu->selectable) {
+               if (pmu->selectable &&
+                   (event_glob == NULL || strglobmatch(pmu->name, event_glob))) {
                        char *s;
                        if (asprintf(&s, "%s//", pmu->name) < 0)
                                goto out_enomem;