diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2014-10-23 06:45:10 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-10-29 08:32:48 -0400 |
commit | 42634bc7a02ead59cf2d50e60d8b8f825de8a3b0 (patch) | |
tree | e48293944290aa9388885a0a1990c8df439f72b2 /tools/perf/util/pmu.c | |
parent | ed3077585f2f041e0db0fc41060b69673e98963b (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.c | 13 |
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++) { |