From: Ian Rogers Date: Sun, 5 Oct 2025 18:24:12 +0000 (-0700) Subject: perf pmu: Factor term parsing into a perf_event_attr into a helper X-Git-Tag: v6.19-rc1~61^2~201 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70424bb5ff5772635e86c6bcfaa9622bc222e1e6;p=thirdparty%2Fkernel%2Flinux.git perf pmu: Factor term parsing into a perf_event_attr into a helper Factor existing functionality in perf_pmu__name_from_config into a helper that will be used in later patches. Tested-by: Thomas Richter Signed-off-by: Ian Rogers Tested-by: James Clark Signed-off-by: Namhyung Kim --- diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 7992bd923515a..2c3e539851c48 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1763,6 +1763,24 @@ static int check_info_data(struct perf_pmu *pmu, return 0; } +static int perf_pmu__parse_terms_to_attr(struct perf_pmu *pmu, const char *terms_str, + struct perf_event_attr *attr) +{ + struct parse_events_terms terms; + int ret; + + parse_events_terms__init(&terms); + ret = parse_events_terms(&terms, terms_str); + if (ret) { + pr_debug("Failed to parse terms '%s': %d\n", terms_str, ret); + parse_events_terms__exit(&terms); + return ret; + } + ret = perf_pmu__config(pmu, attr, &terms, /*apply_hardcoded=*/true, /*err=*/NULL); + parse_events_terms__exit(&terms); + return ret; +} + /* * Find alias in the terms list and replace it with the terms * defined for the alias @@ -2596,21 +2614,8 @@ const char *perf_pmu__name_from_config(struct perf_pmu *pmu, u64 config) hashmap__for_each_entry(pmu->aliases, entry, bkt) { struct perf_pmu_alias *event = entry->pvalue; struct perf_event_attr attr = {.config = 0,}; - struct parse_events_terms terms; - int ret; + int ret = perf_pmu__parse_terms_to_attr(pmu, event->terms, &attr); - parse_events_terms__init(&terms); - ret = parse_events_terms(&terms, event->terms); - if (ret) { - pr_debug("Failed to parse '%s' terms '%s': %d\n", - event->name, event->terms, ret); - parse_events_terms__exit(&terms); - continue; - } - ret = perf_pmu__config(pmu, &attr, &terms, /*apply_hardcoded=*/true, - /*err=*/NULL); - - parse_events_terms__exit(&terms); if (ret == 0 && config == attr.config) return event->name; }