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

Jiri Olsa
2020-07-19T18:14:16Z

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@kernel.org>
---
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