[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tip-13112bbf595d4081f291f7061bb096dbf4401d41@git.kernel.org>
Date: Sun, 7 Dec 2014 22:50:31 -0800
From: tip-bot for Jiri Olsa <tipbot@...or.com>
To: linux-tip-commits@...r.kernel.org
Cc: matt.fleming@...el.com, tglx@...utronix.de, mingo@...nel.org,
jolsa@...nel.org, namhyung@...nel.org, dsahern@...il.com,
acme@...hat.com, a.p.zijlstra@...llo.nl, fweisbec@...il.com,
linux-kernel@...r.kernel.org, cjashfor@...ux.vnet.ibm.com,
eranian@...gle.com, hpa@...or.com, paulus@...ba.org,
ak@...ux.intel.com
Subject: [tip:perf/core] perf evsel:
Introduce perf_counts_values__scale function
Commit-ID: 13112bbf595d4081f291f7061bb096dbf4401d41
Gitweb: http://git.kernel.org/tip/13112bbf595d4081f291f7061bb096dbf4401d41
Author: Jiri Olsa <jolsa@...nel.org>
AuthorDate: Fri, 21 Nov 2014 10:31:06 +0100
Committer: Arnaldo Carvalho de Melo <acme@...hat.com>
CommitDate: Mon, 24 Nov 2014 18:03:50 -0300
perf evsel: Introduce perf_counts_values__scale function
Factoring out scale login into perf_counts_values__scale function.
Signed-off-by: Jiri Olsa <jolsa@...nel.org>
Cc: Andi Kleen <ak@...ux.intel.com>
Cc: Corey Ashford <cjashfor@...ux.vnet.ibm.com>
Cc: David Ahern <dsahern@...il.com>
Cc: Frederic Weisbecker <fweisbec@...il.com>
Cc: Ingo Molnar <mingo@...nel.org>
Cc: Matt Fleming <matt.fleming@...el.com>
Cc: Namhyung Kim <namhyung@...nel.org>
Cc: Paul Mackerras <paulus@...ba.org>
Cc: Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc: Stephane Eranian <eranian@...gle.com>
Link: http://lkml.kernel.org/r/1416562275-12404-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
---
tools/perf/util/evsel.c | 47 ++++++++++++++++++++++-------------------------
tools/perf/util/evsel.h | 3 +++
2 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 1c73bc4..6dc7a67 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -897,6 +897,26 @@ void perf_evsel__compute_deltas(struct perf_evsel *evsel, int cpu,
count->run = count->run - tmp.run;
}
+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 + 0.5);
+ }
+ } else
+ count->ena = count->run = 0;
+
+ if (pscaled)
+ *pscaled = scaled;
+}
+
int __perf_evsel__read_on_cpu(struct perf_evsel *evsel,
int cpu, int thread, bool scale)
{
@@ -913,15 +933,7 @@ int __perf_evsel__read_on_cpu(struct perf_evsel *evsel,
return -errno;
perf_evsel__compute_deltas(evsel, cpu, &count);
-
- if (scale) {
- if (count.run == 0)
- count.val = 0;
- else if (count.run < count.ena)
- count.val = (u64)((double)count.val * count.ena / count.run + 0.5);
- } else
- count.ena = count.run = 0;
-
+ perf_counts_values__scale(&count, scale, NULL);
evsel->counts->cpu[cpu] = count;
return 0;
}
@@ -956,22 +968,7 @@ int __perf_evsel__read(struct perf_evsel *evsel,
}
perf_evsel__compute_deltas(evsel, -1, aggr);
-
- evsel->counts->scaled = 0;
- if (scale) {
- if (aggr->run == 0) {
- evsel->counts->scaled = -1;
- aggr->val = 0;
- return 0;
- }
-
- if (aggr->run < aggr->ena) {
- evsel->counts->scaled = 1;
- aggr->val = (u64)((double)aggr->val * aggr->ena / aggr->run + 0.5);
- }
- } else
- aggr->ena = aggr->run = 0;
-
+ perf_counts_values__scale(aggr, scale, &evsel->counts->scaled);
return 0;
}
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 746b7ea..7af0377 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -110,6 +110,9 @@ struct thread_map;
struct perf_evlist;
struct record_opts;
+void perf_counts_values__scale(struct perf_counts_values *count,
+ bool scale, s8 *pscaled);
+
void perf_evsel__compute_deltas(struct perf_evsel *evsel, int cpu,
struct perf_counts_values *count);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists