Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Mon, 10 Jul 2023 22:58:59 -0700 | Subject | [PATCH v1 3/3] perf pmus: Don't print PMU suffix in list | From | Ian Rogers <> |
| |
Duplicate PMUs are no longer printed but the suffix of the first is printed. Avoid printing the suffix as multiple PMUs are matched.
Before: ``` $ perf list ... uncore_imc_free_running_0/data_read/ [Kernel PMU event] uncore_imc_free_running_0/data_total/ [Kernel PMU event] uncore_imc_free_running_0/data_write/ [Kernel PMU event] ```
After: ``` $ perf list ... uncore_imc_free_running/data_read/ [Kernel PMU event] uncore_imc_free_running/data_total/ [Kernel PMU event] uncore_imc_free_running/data_write/ [Kernel PMU event] ```
Signed-off-by: Ian Rogers <irogers@google.com> --- tools/perf/util/pmus.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c index 87e5fb74e121..c25b9cb70050 100644 --- a/tools/perf/util/pmus.c +++ b/tools/perf/util/pmus.c @@ -443,7 +443,8 @@ static char *format_alias(char *buf, int len, const struct perf_pmu *pmu, const struct perf_pmu_alias *alias) { struct parse_events_term *term; - int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); + int pmu_name_len = pmu_name_len_no_suffix(pmu->name, /*num=*/NULL); + int used = snprintf(buf, len, "%.*s/%s", pmu_name_len, pmu->name, alias->name); list_for_each_entry(term, &alias->terms, list) { if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR) @@ -512,6 +513,7 @@ void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *p *desc = NULL, *long_desc = NULL, *encoding_desc = NULL, *topic = NULL, *pmu_name = NULL; + int pmu_name_len; bool deprecated = false; size_t buf_used; @@ -522,7 +524,8 @@ void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *p if (!aliases[j].event) { /* A selectable event. */ pmu_name = aliases[j].pmu->name; - buf_used = snprintf(buf, sizeof(buf), "%s//", pmu_name) + 1; + pmu_name_len = pmu_name_len_no_suffix(pmu_name, /*num=*/NULL); + buf_used = snprintf(buf, sizeof(buf), "%.*s//", pmu_name_len, pmu_name) + 1; name = buf; } else { if (aliases[j].event->desc) { @@ -548,8 +551,10 @@ void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *p long_desc = aliases[j].event->long_desc; topic = aliases[j].event->topic; encoding_desc = buf + buf_used; + pmu_name_len = pmu_name_len_no_suffix(pmu_name, /*num=*/NULL); buf_used += snprintf(buf + buf_used, sizeof(buf) - buf_used, - "%s/%s/", pmu_name, aliases[j].event->str) + 1; + "%.*s/%s/", pmu_name_len, pmu_name, + aliases[j].event->str) + 1; deprecated = aliases[j].event->deprecated; } print_cb->print_event(print_state, -- 2.41.0.390.g38632f3daf-goog
| ![\](/images/icornerr.gif) |