All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Jiri Olsa <jolsa@kernel.org>, Andi Kleen <ak@linux.intel.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Corey Ashford <cjashfor@linux.vnet.ibm.com>,
	David Ahern <dsahern@gmail.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Ingo Molnar <mingo@kernel.org>,
	Matt Fleming <matt.fleming@intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Stephane Eranian <eranian@google.com>
Subject: [PATCH 02/11] perf tools: Introduce perf_counts_values__scale function
Date: Fri, 21 Nov 2014 10:31:06 +0100	[thread overview]
Message-ID: <1416562275-12404-3-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1416562275-12404-1-git-send-email-jolsa@kernel.org>

Factoring out scale login into perf_counts_values__scale
function.

Cc: Andi Kleen <ak@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Matt Fleming <matt.fleming@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 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 1c73bc4d57d3..6dc7a67e6d35 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 746b7ea84589..7af0377ceb18 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);
 
-- 
1.9.3


  parent reply	other threads:[~2014-11-21  9:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21  9:31 [RFC 00/11] perf tools: Factor stat reading and CQM changes Jiri Olsa
2014-11-21  9:31 ` [PATCH 01/11] perf tools: Introduce perf_evsel__compute_deltas function Jiri Olsa
2014-12-08  6:50   ` [tip:perf/core] perf evsel: " tip-bot for Jiri Olsa
2014-11-21  9:31 ` Jiri Olsa [this message]
2014-12-08  6:50   ` [tip:perf/core] perf evsel: Introduce perf_counts_values__scale function tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 03/11] perf tools: Introduce perf_evsel__read_cb function Jiri Olsa
2014-12-08  6:50   ` [tip:perf/core] perf evsel: " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 04/11] perf stat: Use perf_evsel__read_cb in read_counter Jiri Olsa
2014-11-24 20:35   ` Arnaldo Carvalho de Melo
2014-11-25  9:36     ` Jiri Olsa
2014-11-25 18:38       ` Arnaldo Carvalho de Melo
2014-12-08  6:51   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 05/11] perf stat: Make read_counter work over the thread dimension Jiri Olsa
2014-12-08  6:51   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 06/11] perf stat: Use read_counter in read_counter_aggr Jiri Olsa
2014-12-08  6:52   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 07/11] perf tools: Remove perf_evsel__read interface Jiri Olsa
2014-12-08  6:52   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 08/11] perf tools: Add per-pkg format file parsing Jiri Olsa
2014-12-08  6:51   ` [tip:perf/core] " tip-bot for Matt Fleming
2014-11-21  9:31 ` [PATCH 09/11] perf tools: Add snapshot " Jiri Olsa
2014-12-08  6:51   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 10/11] perf stat: Add support for per-pkg counters Jiri Olsa
2014-12-08  6:52   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:31 ` [PATCH 11/11] perf stat: Add support for snapshot counters Jiri Olsa
2014-12-08  6:52   ` [tip:perf/core] " tip-bot for Jiri Olsa
2014-11-21  9:35 ` [RFC 00/11] perf tools: Factor stat reading and CQM changes Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1416562275-12404-3-git-send-email-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.