Messages in this thread | | | Date | Tue, 17 Mar 2020 16:10:30 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH v5 08/11] perf/tools: Refactoring metricgroup__add_metric function |
| |
On Tue, Mar 17, 2020 at 11:53:30AM +0530, Kajol Jain wrote: > This patch refactor metricgroup__add_metric function where > some part of it move to function metricgroup__add_metric_param. > No logic change. > > Signed-off-by: Kajol Jain <kjain@linux.ibm.com> > --- > tools/perf/util/metricgroup.c | 63 +++++++++++++++++++++-------------- > 1 file changed, 38 insertions(+), 25 deletions(-) > > diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c > index c3a8c701609a..b4919bcfbd8b 100644 > --- a/tools/perf/util/metricgroup.c > +++ b/tools/perf/util/metricgroup.c > @@ -474,6 +474,41 @@ static bool metricgroup__has_constraint(struct pmu_event *pe) > return false; > } > > +static int metricgroup__add_metric_param(struct strbuf *events, > + struct list_head *group_list, struct pmu_event *pe) > +{ > + > + const char **ids; > + int idnum; > + struct egroup *eg; > + int ret = -EINVAL; > + > + if (expr__find_other(pe->metric_expr, NULL, &ids, &idnum, 1) < 0) > + return ret; > + > + if (events->len > 0) > + strbuf_addf(events, ","); > + > + if (metricgroup__has_constraint(pe)) > + metricgroup__add_metric_non_group(events, ids, idnum); > + else > + metricgroup__add_metric_weak_group(events, ids, idnum); > + > + eg = malloc(sizeof(*eg)); > + if (!eg) > + ret = -ENOMEM;
??? you need to return in here, eg is NULL
> + > + eg->ids = ids; > + eg->idnum = idnum; > + eg->metric_name = pe->metric_name; > + eg->metric_expr = pe->metric_expr; > + eg->metric_unit = pe->unit; > + list_add_tail(&eg->nd, group_list); > + ret = 0; > + > + return ret; > +} > + > static int metricgroup__add_metric(const char *metric, struct strbuf *events, > struct list_head *group_list) > { > @@ -493,35 +528,13 @@ static int metricgroup__add_metric(const char *metric, struct strbuf *events, > continue; > if (match_metric(pe->metric_group, metric) || > match_metric(pe->metric_name, metric)) { > - const char **ids; > - int idnum; > - struct egroup *eg; > > pr_debug("metric expr %s for %s\n", pe->metric_expr, pe->metric_name); > > - if (expr__find_other(pe->metric_expr, > - NULL, &ids, &idnum) < 0) > + ret = metricgroup__add_metric_param(events, > + group_list, pe); > + if (ret == -EINVAL) > continue;
previous code did 'continue' on ret < 0, why just -EINVAL now?
jirka
| |