perf stat: Fix/add parameter names for print_metric
authorIan Rogers <irogers@google.com>
Thu, 17 Oct 2024 17:53:51 +0000 (10:53 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 17 Oct 2024 19:44:26 +0000 (12:44 -0700)
The print_metric parameter names were rearranged, fix and add comments
in the stat-shadow callers to ensure they are correct.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Yicong Yang <yangyicong@hisilicon.com>
Cc: Weilin Wang <weilin.wang@intel.com>
Cc: Will Deacon <will@kernel.org>
Cc: James Clark <james.clark@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20241017175356.783793-3-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/stat-shadow.c
tools/perf/util/stat.h

index 6227de8480836b5a97766122c9b740e1b78a55f6..512890d50b6906df8bdc1a6305b0932bfc46ce27 100644 (file)
@@ -196,17 +196,21 @@ static void print_ratio(struct perf_stat_config *config,
                        const struct evsel *evsel, int aggr_idx,
                        double numerator, struct perf_stat_output_ctx *out,
                        enum stat_type denominator_type,
-                       const double color_ratios[3], const char *unit)
+                       const double color_ratios[3], const char *_unit)
 {
        double denominator = find_stat(evsel, aggr_idx, denominator_type);
+       double ratio = 0;
+       const char *color = NULL;
+       const char *fmt = NULL;
+       const char *unit = NULL;
 
        if (numerator && denominator) {
-               double ratio = numerator / denominator * 100.0;
-               const char *color = get_ratio_color(color_ratios, ratio);
-
-               out->print_metric(config, out->ctx, color, "%7.2f%%", unit, ratio);
-       } else
-               out->print_metric(config, out->ctx, NULL, NULL, unit, 0);
+               ratio = numerator / denominator * 100.0;
+               color = get_ratio_color(color_ratios, ratio);
+               fmt = "%7.2f%%";
+               unit = _unit;
+       }
+       out->print_metric(config, out->ctx, color, fmt, unit, ratio);
 }
 
 static void print_stalled_cycles_front(struct perf_stat_config *config,
@@ -320,14 +324,15 @@ static void print_instructions(struct perf_stat_config *config,
                                find_stat(evsel, aggr_idx, STAT_STALLED_CYCLES_BACK));
 
        if (cycles) {
-               print_metric(config, ctxp, NULL, "%7.2f ", "insn per cycle",
-                       instructions / cycles);
-       } else
-               print_metric(config, ctxp, NULL, NULL, "insn per cycle", 0);
+               print_metric(config, ctxp, /*color=*/NULL, "%7.2f ", "insn per cycle",
+                            instructions / cycles);
+       } else {
+               print_metric(config, ctxp, /*color=*/NULL, /*fmt=*/NULL, "insn per cycle", 0);
+       }
 
        if (max_stalled && instructions) {
                out->new_line(config, ctxp);
-               print_metric(config, ctxp, NULL, "%7.2f ", "stalled cycles per insn",
+               print_metric(config, ctxp, /*color=*/NULL, "%7.2f ", "stalled cycles per insn",
                        max_stalled / instructions);
        }
 }
@@ -342,9 +347,10 @@ static void print_cycles(struct perf_stat_config *config,
        if (cycles && nsecs) {
                double ratio = cycles / nsecs;
 
-               out->print_metric(config, out->ctx, NULL, "%8.3f", "GHz", ratio);
-       } else
-               out->print_metric(config, out->ctx, NULL, NULL, "GHz", 0);
+               out->print_metric(config, out->ctx, /*color=*/NULL, "%8.3f", "GHz", ratio);
+       } else {
+               out->print_metric(config, out->ctx, /*color=*/NULL, /*fmt=*/NULL, "GHz", 0);
+       }
 }
 
 static void print_nsecs(struct perf_stat_config *config,
@@ -357,10 +363,11 @@ static void print_nsecs(struct perf_stat_config *config,
        double wall_time = avg_stats(&walltime_nsecs_stats);
 
        if (wall_time) {
-               print_metric(config, ctxp, NULL, "%8.3f", "CPUs utilized",
+               print_metric(config, ctxp, /*color=*/NULL, "%8.3f", "CPUs utilized",
                        nsecs / (wall_time * evsel->scale));
-       } else
-               print_metric(config, ctxp, NULL, NULL, "CPUs utilized", 0);
+       } else {
+               print_metric(config, ctxp, /*color=*/NULL, /*fmt=*/NULL, "CPUs utilized", 0);
+       }
 }
 
 static int prepare_metric(const struct metric_expr *mexp,
@@ -542,12 +549,12 @@ static void generic_metric(struct perf_stat_config *config,
                                        ratio);
                        }
                } else {
-                       print_metric(config, ctxp, color, /*unit=*/NULL,
+                       print_metric(config, ctxp, color, /*fmt=*/NULL,
                                     out->force_header ?
                                     (metric_name ?: evsel->name) : "", 0);
                }
        } else {
-               print_metric(config, ctxp, color, /*unit=*/NULL,
+               print_metric(config, ctxp, color, /*fmt=*/NULL,
                             out->force_header ?
                             (metric_name ?: evsel->name) : "", 0);
        }
@@ -718,9 +725,11 @@ void perf_stat__print_shadow_stats(struct perf_stat_config *config,
 
                                if (unit != ' ')
                                        snprintf(unit_buf, sizeof(unit_buf), "%c/sec", unit);
-                               print_metric(config, ctxp, NULL, "%8.3f", unit_buf, ratio);
-                       } else
+                               print_metric(config, ctxp, /*color=*/NULL, "%8.3f",
+                                            unit_buf, ratio);
+                       } else {
                                num = 0;
+                       }
                }
        }
 
@@ -728,7 +737,7 @@ void perf_stat__print_shadow_stats(struct perf_stat_config *config,
                                                  &num, NULL, out, metric_events);
 
        if (num == 0)
-               print_metric(config, ctxp, NULL, NULL, NULL, 0);
+               print_metric(config, ctxp, /*color=*/NULL, /*fmt=*/NULL, /*unit=*/NULL, 0);
 }
 
 /**
index fd7a187551bd1e78f342e78339a1c0359e7abe88..a5f3d7d001017f0cb1a3d17734ca1e57b3f1add0 100644 (file)
@@ -155,8 +155,10 @@ extern struct stats walltime_nsecs_stats;
 extern struct rusage_stats ru_stats;
 
 typedef void (*print_metric_t)(struct perf_stat_config *config,
-                              void *ctx, const char *color, const char *unit,
-                              const char *fmt, double val);
+                              void *ctx, const char *color,
+                              const char *fmt,
+                              const char *unit,
+                              double val);
 typedef void (*new_line_t)(struct perf_stat_config *config, void *ctx);
 
 /* Used to print the display name of the Default metricgroup for now. */