aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools/lib/perf/evsel.c
diff options
context:
space:
mode:
authorShunsuke Nakamura <nakamura.shun@fujitsu.com>2021-11-09 17:58:29 +0900
committerArnaldo Carvalho de Melo <acme@redhat.com>2021-12-07 22:18:23 -0300
commit9a5b2d1afa9f888335ab63e922ba5eed31383020 (patch)
tree90f12741b3ab98649cf7fb147163cfe65d3e48d8 /tools/lib/perf/evsel.c
parenttools build: Enable warnings through HOSTCFLAGS (diff)
downloadwireguard-linux-9a5b2d1afa9f888335ab63e922ba5eed31383020.tar.xz
wireguard-linux-9a5b2d1afa9f888335ab63e922ba5eed31383020.zip
libperf: Adopt perf_counts_values__scale() from tools/perf/util
Move perf_counts_values__scale() from tools/perf/util to tools/lib/perf so that it can be used with libperf. Committer notes: As noted by Jiri, use __s8 instead of s8 on the exported function. Signed-off-by: Shunsuke Nakamura <nakamura.shun@fujitsu.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20211109085831.3770594-2-nakamura.shun@fujitsu.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/perf/evsel.c')
-rw-r--r--tools/lib/perf/evsel.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c
index 8441e3e1aaac..68f83d2c27c1 100644
--- a/tools/lib/perf/evsel.c
+++ b/tools/lib/perf/evsel.c
@@ -431,3 +431,22 @@ void perf_evsel__free_id(struct perf_evsel *evsel)
zfree(&evsel->id);
evsel->ids = 0;
}
+
+void perf_counts_values__scale(struct perf_counts_values *count,
+ bool scale, __s8 *pscaled)
+{
+ s8 scaled = 0;
+
+ if (scale) {
+ if (count->run == 0) {
+ scaled = -1;
+ count->val = 0;
+ } else if (count->run < count->ena) {
+ scaled = 1;
+ count->val = (u64)((double)count->val * count->ena / count->run);
+ }
+ }
+
+ if (pscaled)
+ *pscaled = scaled;
+}