lkml.org 
[lkml]   [2020]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 11/14] perf tools: Factor out prepare_metric function
    Date
    Factoring out prepare_metric functio so it can
    be used in test interface coming in following
    changes.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    ---
    tools/perf/util/stat-shadow.c | 53 ++++++++++++++++++++++-------------
    1 file changed, 34 insertions(+), 19 deletions(-)

    diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
    index a7c13a88ecb9..27be7ce2fff4 100644
    --- a/tools/perf/util/stat-shadow.c
    +++ b/tools/perf/util/stat-shadow.c
    @@ -730,25 +730,16 @@ static void print_smi_cost(struct perf_stat_config *config,
    out->print_metric(config, out->ctx, NULL, "%4.0f", "SMI#", smi_num);
    }

    -static void generic_metric(struct perf_stat_config *config,
    - const char *metric_expr,
    - struct evsel **metric_events,
    - char *name,
    - const char *metric_name,
    - const char *metric_unit,
    - int runtime,
    - int cpu,
    - struct perf_stat_output_ctx *out,
    - struct runtime_stat *st)
    +static int prepare_metric(struct evsel **metric_events,
    + struct expr_parse_ctx *pctx,
    + int cpu,
    + struct runtime_stat *st)
    {
    - print_metric_t print_metric = out->print_metric;
    - struct expr_parse_ctx pctx;
    - double ratio, scale;
    - int i;
    - void *ctxp = out->ctx;
    + double scale;
    char *n, *pn;
    + int i;

    - expr__ctx_init(&pctx);
    + expr__ctx_init(pctx);
    for (i = 0; metric_events[i]; i++) {
    struct saved_value *v;
    struct stats *stats;
    @@ -771,7 +762,7 @@ static void generic_metric(struct perf_stat_config *config,

    n = strdup(metric_events[i]->name);
    if (!n)
    - return;
    + return -ENOMEM;
    /*
    * This display code with --no-merge adds [cpu] postfixes.
    * These are not supported by the parser. Remove everything
    @@ -782,11 +773,35 @@ static void generic_metric(struct perf_stat_config *config,
    *pn = 0;

    if (metric_total)
    - expr__add_id(&pctx, n, metric_total);
    + expr__add_id(pctx, n, metric_total);
    else
    - expr__add_id(&pctx, n, avg_stats(stats)*scale);
    + expr__add_id(pctx, n, avg_stats(stats)*scale);
    }

    + return i;
    +}
    +
    +static void generic_metric(struct perf_stat_config *config,
    + const char *metric_expr,
    + struct evsel **metric_events,
    + char *name,
    + const char *metric_name,
    + const char *metric_unit,
    + int runtime,
    + int cpu,
    + struct perf_stat_output_ctx *out,
    + struct runtime_stat *st)
    +{
    + print_metric_t print_metric = out->print_metric;
    + struct expr_parse_ctx pctx;
    + double ratio, scale;
    + int i;
    + void *ctxp = out->ctx;
    +
    + i = prepare_metric(metric_events, &pctx, cpu, st);
    + if (i < 0)
    + return;
    +
    if (!metric_events[i]) {
    if (expr__parse(&ratio, &pctx, metric_expr, runtime) == 0) {
    char *unit;
    --
    2.25.4
    \
     
     \ /
      Last update: 2020-05-25 00:43    [W:2.979 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site