Re: [PATCH 12/19] perf metric: Add events for the current list

From: Ian Rogers
Date: Sun Jul 19 2020 - 18:35:02 EST


On Sun, Jul 19, 2020 at 11:14 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote:
>
> There's no need to iterate the whole list of groups,
> when adding new events. The currently created groups
> are the ones we want to add.
>
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>

Acked-by: Ian Rogers <irogers@xxxxxxxxxx>

Thanks,
Ian

> ---
> tools/perf/util/metricgroup.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
> index bb5757b9419d..332414d93f7a 100644
> --- a/tools/perf/util/metricgroup.c
> +++ b/tools/perf/util/metricgroup.c
> @@ -813,6 +813,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
> {
> struct pmu_event *pe;
> struct egroup *eg;
> + LIST_HEAD(list);
> int i, ret;
> bool has_match = false;
>
> @@ -820,7 +821,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
> has_match = true;
> eg = NULL;
>
> - ret = add_metric(group_list, pe, metric_no_group, &eg);
> + ret = add_metric(&list, pe, metric_no_group, &eg);
> if (ret)
> return ret;
>
> @@ -829,7 +830,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
> * included in the expression.
> */
> ret = resolve_metric(eg, metric_no_group,
> - group_list, map);
> + &list, map);
> if (ret)
> return ret;
> }
> @@ -838,7 +839,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
> if (!has_match)
> return -EINVAL;
>
> - list_for_each_entry(eg, group_list, nd) {
> + list_for_each_entry(eg, &list, nd) {
> if (events->len > 0)
> strbuf_addf(events, ",");
>
> @@ -850,6 +851,8 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
> &eg->pctx);
> }
> }
> +
> + list_splice(&list, group_list);
> return 0;
> }
>
> --
> 2.25.4
>