Messages in this thread | | | Subject | Re: [PATCH 16/19] perf metric: Make compute_single function more precise | From | kajoljain <> | Date | Wed, 29 Jul 2020 01:47:01 +0530 |
| |
On 7/28/20 10:56 PM, Ian Rogers wrote: > On Tue, Jul 28, 2020 at 5:36 AM Arnaldo Carvalho de Melo > <acme@kernel.org> wrote: >> >> Em Sun, Jul 19, 2020 at 08:13:17PM +0200, Jiri Olsa escreveu: >>> So far compute_single function relies on the fact, that >>> there's only single metric defined within evlist in all >>> tests. In following patch we will add test for metric >>> group, so we need to be able to compute metric by given >>> name. >>> >>> Adding the name argument to compute_single and iterating >>> evlist and evsel's expression to find the given metric. >> >> Applied, thanks. >> >> Ian, Kajol, I didn't notice your Acked-by or Reviewed-by, like for the >> other patches, can you check? > > > Acked-by: Ian Rogers <irogers@google.com>
Reviewed-By: Kajol Jain<kjain@linux.ibm.com>
Thanks, Kajol Jain > > Thanks, > Ian > >> - Arnaldo >> >>> Signed-off-by: Jiri Olsa <jolsa@kernel.org> >>> --- >>> tools/perf/tests/parse-metric.c | 22 +++++++++++++--------- >>> 1 file changed, 13 insertions(+), 9 deletions(-) >>> >>> diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c >>> index 01370ccb9ed9..5ac32f80f8ea 100644 >>> --- a/tools/perf/tests/parse-metric.c >>> +++ b/tools/perf/tests/parse-metric.c >>> @@ -108,17 +108,21 @@ static void load_runtime_stat(struct runtime_stat *st, struct evlist *evlist, >>> } >>> >>> static double compute_single(struct rblist *metric_events, struct evlist *evlist, >>> - struct runtime_stat *st) >>> + struct runtime_stat *st, const char *name) >>> { >>> - struct evsel *evsel = evlist__first(evlist); >>> + struct metric_expr *mexp; >>> struct metric_event *me; >>> + struct evsel *evsel; >>> >>> - me = metricgroup__lookup(metric_events, evsel, false); >>> - if (me != NULL) { >>> - struct metric_expr *mexp; >>> - >>> - mexp = list_first_entry(&me->head, struct metric_expr, nd); >>> - return test_generic_metric(mexp, 0, st); >>> + evlist__for_each_entry(evlist, evsel) { >>> + me = metricgroup__lookup(metric_events, evsel, false); >>> + if (me != NULL) { >>> + list_for_each_entry (mexp, &me->head, nd) { >>> + if (strcmp(mexp->metric_name, name)) >>> + continue; >>> + return test_generic_metric(mexp, 0, st); >>> + } >>> + } >>> } >>> return 0.; >>> } >>> @@ -162,7 +166,7 @@ static int compute_metric(const char *name, struct value *vals, double *ratio) >>> load_runtime_stat(&st, evlist, vals); >>> >>> /* And execute the metric */ >>> - *ratio = compute_single(&metric_events, evlist, &st); >>> + *ratio = compute_single(&metric_events, evlist, &st, name); >>> >>> /* ... clenup. */ >>> metricgroup__rblist_exit(&metric_events); >>> -- >>> 2.25.4 >>> >> >> -- >> >> - Arnaldo
| |