perf parse-events: Pass cpu_list as a perf_cpu_map in __add_event()
Previously the cpu_list is a string and typically no cpu_list is passed to __add_event(). Wanting to make events have their cpus distinct from the PMU means that in more occassions we want to pass a cpu_list. If we're reading this from sysfs it is easier to read a perf_cpu_map than allocate and pass around strings that will later be parsed. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ananth Narayan <ananth.narayan@amd.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com> Cc: Dominique Martinet <asmadeus@codewreck.org> Cc: Gautham Shenoy <gautham.shenoy@amd.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: K Prateek Nayak <kprateek.nayak@amd.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Sandipan Das <sandipan.das@amd.com> Link: https://lore.kernel.org/r/20240718003025.1486232-3-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
beef8fb2af
commit
f76e3525ac
@ -227,12 +227,12 @@ __add_event(struct list_head *list, int *idx,
|
||||
bool init_attr,
|
||||
const char *name, const char *metric_id, struct perf_pmu *pmu,
|
||||
struct list_head *config_terms, bool auto_merge_stats,
|
||||
const char *cpu_list)
|
||||
struct perf_cpu_map *cpu_list)
|
||||
{
|
||||
struct evsel *evsel;
|
||||
struct perf_cpu_map *cpus = pmu ? perf_cpu_map__get(pmu->cpus) :
|
||||
cpu_list ? perf_cpu_map__new(cpu_list) : NULL;
|
||||
struct perf_cpu_map *cpus = perf_cpu_map__is_empty(cpu_list) && pmu ? pmu->cpus : cpu_list;
|
||||
|
||||
cpus = perf_cpu_map__get(cpus);
|
||||
if (pmu)
|
||||
perf_pmu__warn_invalid_formats(pmu);
|
||||
|
||||
@ -305,16 +305,17 @@ static int add_event_tool(struct list_head *list, int *idx,
|
||||
.type = PERF_TYPE_SOFTWARE,
|
||||
.config = PERF_COUNT_SW_DUMMY,
|
||||
};
|
||||
const char *cpu_list = NULL;
|
||||
struct perf_cpu_map *cpu_list = NULL;
|
||||
|
||||
if (tool_event == PERF_TOOL_DURATION_TIME) {
|
||||
/* Duration time is gathered globally, pretend it is only on CPU0. */
|
||||
cpu_list = "0";
|
||||
cpu_list = perf_cpu_map__new("0");
|
||||
}
|
||||
evsel = __add_event(list, idx, &attr, /*init_attr=*/true, /*name=*/NULL,
|
||||
/*metric_id=*/NULL, /*pmu=*/NULL,
|
||||
/*config_terms=*/NULL, /*auto_merge_stats=*/false,
|
||||
cpu_list);
|
||||
perf_cpu_map__put(cpu_list);
|
||||
if (!evsel)
|
||||
return -ENOMEM;
|
||||
evsel->tool_event = tool_event;
|
||||
|
Loading…
Reference in New Issue
Block a user