aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/pmu.c
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2014-10-23 06:45:10 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2014-10-29 08:32:48 -0400
commit42634bc7a02ead59cf2d50e60d8b8f825de8a3b0 (patch)
treee48293944290aa9388885a0a1990c8df439f72b2 /tools/perf/util/pmu.c
parented3077585f2f041e0db0fc41060b69673e98963b (diff)
perf pmu: Let pmu's with no events show up on perf list
perf list only lists PMUs with events. Add a flag to cause a PMU to be also listed separately. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1414061124-26830-3-git-send-email-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/pmu.c')
-rw-r--r--tools/perf/util/pmu.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index e243ad962a4d..91dca604c422 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -747,15 +747,18 @@ void print_pmu_events(const char *event_glob, bool name_only)
747 747
748 pmu = NULL; 748 pmu = NULL;
749 len = 0; 749 len = 0;
750 while ((pmu = perf_pmu__scan(pmu)) != NULL) 750 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
751 list_for_each_entry(alias, &pmu->aliases, list) 751 list_for_each_entry(alias, &pmu->aliases, list)
752 len++; 752 len++;
753 if (pmu->selectable)
754 len++;
755 }
753 aliases = malloc(sizeof(char *) * len); 756 aliases = malloc(sizeof(char *) * len);
754 if (!aliases) 757 if (!aliases)
755 return; 758 return;
756 pmu = NULL; 759 pmu = NULL;
757 j = 0; 760 j = 0;
758 while ((pmu = perf_pmu__scan(pmu)) != NULL) 761 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
759 list_for_each_entry(alias, &pmu->aliases, list) { 762 list_for_each_entry(alias, &pmu->aliases, list) {
760 char *name = format_alias(buf, sizeof(buf), pmu, alias); 763 char *name = format_alias(buf, sizeof(buf), pmu, alias);
761 bool is_cpu = !strcmp(pmu->name, "cpu"); 764 bool is_cpu = !strcmp(pmu->name, "cpu");
@@ -772,6 +775,12 @@ void print_pmu_events(const char *event_glob, bool name_only)
772 aliases[j] = strdup(aliases[j]); 775 aliases[j] = strdup(aliases[j]);
773 j++; 776 j++;
774 } 777 }
778 if (pmu->selectable) {
779 scnprintf(buf, sizeof(buf), "%s//", pmu->name);
780 aliases[j] = strdup(buf);
781 j++;
782 }
783 }
775 len = j; 784 len = j;
776 qsort(aliases, len, sizeof(char *), cmp_string); 785 qsort(aliases, len, sizeof(char *), cmp_string);
777 for (j = 0; j < len; j++) { 786 for (j = 0; j < len; j++) {