Re: [PATCH v5] perf tools: add support for libpfm4

From: Jiri Olsa
Date: Tue Mar 24 2020 - 06:26:16 EST


On Mon, Mar 23, 2020 at 04:58:46PM -0700, Ian Rogers wrote:

SNIP

> + /* no event */
> + if (*q == '\0')
> + continue;
> +
> + memset(&attr, 0, sizeof(attr));
> + event_attr_init(&attr);
> +
> + ret = parse_libpfm_event(q, &attr);
> + if (ret != PFM_SUCCESS) {
> + fprintf(stderr, "failed to parse event %s : %s\n", str, pfm_strerror(ret));
> + goto error;
> + }
> +
> + evsel = perf_evsel__new_idx(&attr, evlist->core.nr_entries);
> + if (evsel == NULL)
> + goto error;
> +
> + evsel->name = strdup(q);
> + if (!evsel->name) {
> + evsel__delete(evsel);
> + goto error;
> + }
> + evsel->is_libpfm_event = true;
> +
> + pmu = perf_pmu__find_by_type((unsigned)attr.type);
> + if (pmu)
> + evsel->core.own_cpus = perf_cpu_map__get(pmu->cpus);

I think you need to do more setup in here, like in __add_event function
would be great to factor those bits from __add_event function and call
it from here, so it's all in one place

jirka