lkml.org 
[lkml]   [2020]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 16/19] perf metric: Make compute_single function more precise
Date
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.

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
\
 
 \ /
  Last update: 2020-07-19 20:15    [W:0.470 / U:0.224 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site