mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Andi Kleen <ak@linux.intel.com>, David Ahern <dsahern@gmail.com>,
	Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Stephane Eranian <eranian@google.com>
Subject: [PATCH 09/25] perf stat: Introduce perf_counts function
Date: Wed, 10 Jun 2015 20:10:42 +0200	[thread overview]
Message-ID: <1433959858-31858-10-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1433959858-31858-1-git-send-email-jolsa@kernel.org>

Introducing perf_counts function, that returns
'struct perf_counts_values' pointer for given cpu.

Link: http://lkml.kernel.org/n/tip-qu64zmm5zbpbkuybusnkg4gl@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/builtin-stat.c                  | 14 +++++++-------
 tools/perf/tests/openat-syscall-all-cpus.c |  4 ++--
 tools/perf/tests/openat-syscall.c          |  2 +-
 tools/perf/util/evsel.c                    |  6 +++---
 tools/perf/util/evsel.h                    |  6 ++++++
 5 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 90766538fd8f..7d1aebd5e1e4 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -316,7 +316,7 @@ static int read_cb(struct perf_evsel *evsel, int cpu, int thread __maybe_unused,
 		if (!evsel->snapshot)
 			perf_evsel__compute_deltas(evsel, cpu, count);
 		perf_counts_values__scale(count, scale, NULL);
-		evsel->counts->cpu[cpu] = *count;
+		*perf_counts(evsel->counts, cpu) = *count;
 		if (aggr_mode == AGGR_NONE)
 			perf_stat__update_shadow_stats(evsel, count->values, cpu);
 		break;
@@ -802,9 +802,9 @@ static void print_aggr(char *prefix)
 				s2 = aggr_get_id(evsel_list->cpus, cpu2);
 				if (s2 != id)
 					continue;
-				val += counter->counts->cpu[cpu].val;
-				ena += counter->counts->cpu[cpu].ena;
-				run += counter->counts->cpu[cpu].run;
+				val += perf_counts(counter->counts, cpu)->val;
+				ena += perf_counts(counter->counts, cpu)->ena;
+				run += perf_counts(counter->counts, cpu)->run;
 				nr++;
 			}
 			if (prefix)
@@ -912,9 +912,9 @@ static void print_counter(struct perf_evsel *counter, char *prefix)
 	int cpu;
 
 	for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) {
-		val = counter->counts->cpu[cpu].val;
-		ena = counter->counts->cpu[cpu].ena;
-		run = counter->counts->cpu[cpu].run;
+		val = perf_counts(counter->counts, cpu)->val;
+		ena = perf_counts(counter->counts, cpu)->ena;
+		run = perf_counts(counter->counts, cpu)->run;
 
 		if (prefix)
 			fprintf(output, "%s", prefix);
diff --git a/tools/perf/tests/openat-syscall-all-cpus.c b/tools/perf/tests/openat-syscall-all-cpus.c
index 8801983a38f0..a89a39f282ea 100644
--- a/tools/perf/tests/openat-syscall-all-cpus.c
+++ b/tools/perf/tests/openat-syscall-all-cpus.c
@@ -97,9 +97,9 @@ int test__openat_syscall_event_on_all_cpus(void)
 		}
 
 		expected = nr_openat_calls + cpu;
-		if (evsel->counts->cpu[cpu].val != expected) {
+		if (perf_counts(evsel->counts, cpu)->val != expected) {
 			pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %" PRIu64 "\n",
-				 expected, cpus->map[cpu], evsel->counts->cpu[cpu].val);
+				 expected, cpus->map[cpu], perf_counts(evsel->counts, cpu)->val);
 			err = -1;
 		}
 	}
diff --git a/tools/perf/tests/openat-syscall.c b/tools/perf/tests/openat-syscall.c
index bdfa1f446681..e86fc477a74f 100644
--- a/tools/perf/tests/openat-syscall.c
+++ b/tools/perf/tests/openat-syscall.c
@@ -44,7 +44,7 @@ int test__openat_syscall_event(void)
 		goto out_close_fd;
 	}
 
-	if (evsel->counts->cpu[0].val != nr_openat_calls) {
+	if (perf_counts(evsel->counts, 0)->val != nr_openat_calls) {
 		pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls, got %" PRIu64 "\n",
 			 nr_openat_calls, evsel->counts->cpu[0].val);
 		goto out_close_fd;
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index fde2416921cc..1a6bdd16ec37 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -945,8 +945,8 @@ void perf_evsel__compute_deltas(struct perf_evsel *evsel, int cpu,
 		tmp = evsel->prev_raw_counts->aggr;
 		evsel->prev_raw_counts->aggr = *count;
 	} else {
-		tmp = evsel->prev_raw_counts->cpu[cpu];
-		evsel->prev_raw_counts->cpu[cpu] = *count;
+		tmp = *perf_counts(evsel->prev_raw_counts, cpu);
+		*perf_counts(evsel->prev_raw_counts, cpu) = *count;
 	}
 
 	count->val = count->val - tmp.val;
@@ -1007,7 +1007,7 @@ int __perf_evsel__read_on_cpu(struct perf_evsel *evsel,
 
 	perf_evsel__compute_deltas(evsel, cpu, &count);
 	perf_counts_values__scale(&count, scale, NULL);
-	evsel->counts->cpu[cpu] = count;
+	*perf_counts(evsel->counts, cpu) = count;
 	return 0;
 }
 
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index ef619645a08f..3037c24e1fea 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -134,6 +134,12 @@ void perf_evsel__compute_deltas(struct perf_evsel *evsel, int cpu,
 struct perf_counts *perf_counts__alloc(int ncpus);
 void perf_counts__free(struct perf_counts *counts);
 
+static inline struct perf_counts_values*
+perf_counts(struct perf_counts *counts, int cpu)
+{
+	return &counts->cpu[cpu];
+}
+
 int perf_evsel__object_config(size_t object_size,
 			      int (*init)(struct perf_evsel *evsel),
 			      void (*fini)(struct perf_evsel *evsel));
-- 
1.9.3


  parent reply	other threads:[~2015-06-10 18:12 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-10 18:10 [RFC/PATCH 00/25] perf stat: Introduce --per-task option Jiri Olsa
2015-06-10 18:10 ` [PATCH 01/25] perf tools: Fix python code with missing stat dependency Jiri Olsa
2015-06-10 18:55   ` Arnaldo Carvalho de Melo
2015-06-10 20:23     ` Jiri Olsa
2015-06-10 20:32       ` Arnaldo Carvalho de Melo
2015-06-13 10:10         ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 02/25] perf tools: Introduce xyarray__zero function Jiri Olsa
2015-06-10 19:06   ` Arnaldo Carvalho de Melo
2015-06-10 20:01     ` Jiri Olsa
2015-06-10 20:17       ` Arnaldo Carvalho de Melo
2015-06-10 18:10 ` [PATCH 03/25] perf tools: Add reference counting for cpu_map object Jiri Olsa
2015-06-10 19:07   ` Arnaldo Carvalho de Melo
2015-06-10 20:07     ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 04/25] perf tools: Add reference counting for thread_map object Jiri Olsa
2015-06-10 19:08   ` Arnaldo Carvalho de Melo
2015-06-10 20:24     ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 05/25] perf tools: Propagate cpu maps through the evlist Jiri Olsa
2015-06-10 19:10   ` Arnaldo Carvalho de Melo
2015-06-10 18:10 ` [PATCH 06/25] perf tools: Propagate thread " Jiri Olsa
2015-06-10 19:09   ` Arnaldo Carvalho de Melo
2015-06-10 20:25     ` Jiri Olsa
2015-06-11 13:07       ` Namhyung Kim
2015-06-12 20:13         ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 07/25] perf tools: Make perf_evsel__(nr_)cpus generic Jiri Olsa
2015-06-10 18:10 ` [PATCH 08/25] perf stat: Introduce perf_counts__(alloc|free|reset) functions Jiri Olsa
2015-06-10 18:54   ` Arnaldo Carvalho de Melo
2015-06-10 20:22     ` Jiri Olsa
2015-06-10 18:10 ` Jiri Olsa [this message]
2015-06-10 18:10 ` [PATCH 10/25] perf stat: Use xyarray for cpu evsel counts Jiri Olsa
2015-06-10 18:10 ` [PATCH 11/25] perf stat: Make stats work over the thread dimension Jiri Olsa
2015-06-10 18:10 ` [PATCH 12/25] perf stat: Rename struct perf_counts::cpu member to values Jiri Olsa
2015-06-10 18:10 ` [PATCH 13/25] perf stat: Move perf_evsel__(alloc|free|reset)_stat_priv into evsel object Jiri Olsa
2015-06-10 18:49   ` Arnaldo Carvalho de Melo
2015-06-10 20:21     ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 14/25] perf stat: Move perf_evsel__(alloc|free)_prev_raw_counts " Jiri Olsa
2015-06-10 18:10 ` [PATCH 15/25] perf stat: Move perf_evlist__(alloc|free)_stats into evlist object Jiri Olsa
2015-06-10 19:13   ` Arnaldo Carvalho de Melo
2015-06-10 20:25     ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 16/25] perf stat: Introduce perf_evsel__alloc_stats function Jiri Olsa
2015-06-10 18:10 ` [PATCH 17/25] perf stat: Introduce perf_evsel__read function Jiri Olsa
2015-06-10 18:10 ` [PATCH 18/25] perf stat: Introduce read_counters function Jiri Olsa
2015-06-10 18:10 ` [PATCH 19/25] perf stat: Separate counters reading and processing Jiri Olsa
2015-06-10 18:10 ` [PATCH 20/25] perf stat: Move zero_per_pkg into counter process code Jiri Olsa
2015-06-10 18:10 ` [PATCH 21/25] perf stat: Move perf_stat initialization " Jiri Olsa
2015-06-10 18:47   ` David Ahern
2015-06-10 20:21     ` Jiri Olsa
2015-06-10 18:10 ` [PATCH 22/25] perf stat: Remove perf_evsel__read_cb function Jiri Olsa
2015-06-10 18:10 ` [PATCH 23/25] perf stat: Rename print_interval to process_interval Jiri Olsa
2015-06-10 18:10 ` [PATCH 24/25] perf stat: Introduce print_counters function Jiri Olsa
2015-06-10 18:10 ` [PATCH 25/25] perf stat: Introduce --per-task option Jiri Olsa
2015-06-10 18:44   ` David Ahern
2015-06-10 18:54     ` Jiri Olsa
2015-06-10 19:28     ` Arnaldo Carvalho de Melo
2015-06-10 18:16 ` [RFC/PATCH 00/25] " 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=1433959858-31858-10-git-send-email-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome