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

From: Jiri Olsa
Date: Wed Jul 29 2020 - 05:20:10 EST


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>
Reviewed-by: Kajol Jain <kjain@xxxxxxxxxxxxx>
Acked-by: Ian Rogers <irogers@xxxxxxxxxx>
Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>
Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx>
Cc: John Garry <john.garry@xxxxxxxxxx>
Cc: Michael Petlan <mpetlan@xxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Paul Clarke <pc@xxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Stephane Eranian <eranian@xxxxxxxxxx>
Link: http://lore.kernel.org/lkml/20200719181320.785305-13-jolsa@xxxxxxxxxx
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
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 a9f101948e1f..caec3696e52b 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