Re: [PATCH v3] tools/perf/metricgroup: Fix printing event names of metric group with multiple events incase of overlapping events

From: Jiri Olsa
Date: Thu Feb 06 2020 - 13:45:33 EST


On Fri, Jan 31, 2020 at 10:55:22AM +0530, Kajol Jain wrote:

SNIP

> ev->metric_leader = metric_events[i];
> }
> + j++;
> }
> + ev = metric_events[i];
> + evlist_used[ev->idx] = true;
> }
>
> return metric_events[0];
> @@ -160,6 +161,9 @@ static int metricgroup__setup_events(struct list_head *groups,
> int ret = 0;
> struct egroup *eg;
> struct evsel *evsel;
> + bool evlist_used[perf_evlist->core.nr_entries];
> +
> + memset(evlist_used, 0, perf_evlist->core.nr_entries);

I know I posted this in the previous email, but are we sure bool
is always 1 byte? would sizeod(evlist_used) be safer?

other than that it looks ok

Andi, you're ok with this?

thanks,
jirka

>
> list_for_each_entry (eg, groups, nd) {
> struct evsel **metric_events;
> @@ -170,7 +174,7 @@ static int metricgroup__setup_events(struct list_head *groups,
> break;
> }
> evsel = find_evsel_group(perf_evlist, eg->ids, eg->idnum,
> - metric_events);
> + metric_events, evlist_used);
> if (!evsel) {
> pr_debug("Cannot resolve %s: %s\n",
> eg->metric_name, eg->metric_expr);
> --
> 2.21.0
>