From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932220AbbFRIQT (ORCPT ); Thu, 18 Jun 2015 04:16:19 -0400 Received: from terminus.zytor.com ([198.137.202.10]:57178 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753940AbbFRIPQ (ORCPT ); Thu, 18 Jun 2015 04:15:16 -0400 Date: Thu, 18 Jun 2015 01:14:54 -0700 From: tip-bot for Jiri Olsa Message-ID: Cc: linux-kernel@vger.kernel.org, dsahern@gmail.com, a.p.zijlstra@chello.nl, ak@linux.intel.com, hpa@zytor.com, tglx@linutronix.de, eranian@google.com, acme@redhat.com, mingo@kernel.org, namhyung@kernel.org, adrian.hunter@intel.com, jolsa@kernel.org Reply-To: dsahern@gmail.com, linux-kernel@vger.kernel.org, ak@linux.intel.com, hpa@zytor.com, a.p.zijlstra@chello.nl, namhyung@kernel.org, jolsa@kernel.org, adrian.hunter@intel.com, mingo@kernel.org, eranian@google.com, acme@redhat.com, tglx@linutronix.de In-Reply-To: <1434269985-521-13-git-send-email-jolsa@kernel.org> References: <1434269985-521-13-git-send-email-jolsa@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf stat: Introduce perf_counts__( new|delete|reset) functions Git-Commit-ID: 9df38e82e2a103cf42177c164a4de9d58052ac3a X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 9df38e82e2a103cf42177c164a4de9d58052ac3a Gitweb: http://git.kernel.org/tip/9df38e82e2a103cf42177c164a4de9d58052ac3a Author: Jiri Olsa AuthorDate: Sun, 14 Jun 2015 10:19:27 +0200 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 16 Jun 2015 10:34:41 -0300 perf stat: Introduce perf_counts__(new|delete|reset) functions Move 'struct perf_counts' allocation|free|reset code into separate functions. Signed-off-by: Jiri Olsa Cc: Adrian Hunter Cc: Andi Kleen Cc: David Ahern Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Stephane Eranian Link: http://lkml.kernel.org/r/1434269985-521-13-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-stat.c | 19 +++++++------------ tools/perf/util/stat.c | 28 +++++++++++++++++++++++----- tools/perf/util/stat.h | 3 +++ 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index b24ecee..fcf99bd 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -178,24 +178,19 @@ static void perf_evsel__free_stat_priv(struct perf_evsel *evsel) static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel) { - void *addr; - size_t sz; + struct perf_counts *counts; - sz = sizeof(*evsel->counts) + - (perf_evsel__nr_cpus(evsel) * sizeof(struct perf_counts_values)); + counts = perf_counts__new(perf_evsel__nr_cpus(evsel)); + if (counts) + evsel->prev_raw_counts = counts; - addr = zalloc(sz); - if (!addr) - return -ENOMEM; - - evsel->prev_raw_counts = addr; - - return 0; + return counts ? 0 : -ENOMEM; } static void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel) { - zfree(&evsel->prev_raw_counts); + perf_counts__delete(evsel->prev_raw_counts); + evsel->prev_raw_counts = NULL; } static void perf_evlist__free_stats(struct perf_evlist *evlist) diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index ac589b6..4014b70 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c @@ -95,20 +95,38 @@ void perf_stat_evsel_id_init(struct perf_evsel *evsel) } } +struct perf_counts *perf_counts__new(int ncpus) +{ + int size = sizeof(struct perf_counts) + + ncpus * sizeof(struct perf_counts_values); + + return zalloc(size); +} + +void perf_counts__delete(struct perf_counts *counts) +{ + free(counts); +} + +static void perf_counts__reset(struct perf_counts *counts, int ncpus) +{ + memset(counts, 0, (sizeof(*counts) + + (ncpus * sizeof(struct perf_counts_values)))); +} + void perf_evsel__reset_counts(struct perf_evsel *evsel, int ncpus) { - memset(evsel->counts, 0, (sizeof(*evsel->counts) + - (ncpus * sizeof(struct perf_counts_values)))); + perf_counts__reset(evsel->counts, ncpus); } int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus) { - evsel->counts = zalloc((sizeof(*evsel->counts) + - (ncpus * sizeof(struct perf_counts_values)))); + evsel->counts = perf_counts__new(ncpus); return evsel->counts != NULL ? 0 : -ENOMEM; } void perf_evsel__free_counts(struct perf_evsel *evsel) { - zfree(&evsel->counts); + perf_counts__delete(evsel->counts); + evsel->counts = NULL; } diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h index 6a78260..093dc3c 100644 --- a/tools/perf/util/stat.h +++ b/tools/perf/util/stat.h @@ -62,6 +62,9 @@ void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 *count, void perf_stat__print_shadow_stats(FILE *out, struct perf_evsel *evsel, double avg, int cpu, enum aggr_mode aggr); +struct perf_counts *perf_counts__new(int ncpus); +void perf_counts__delete(struct perf_counts *counts); + void perf_evsel__reset_counts(struct perf_evsel *evsel, int ncpus); int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus); void perf_evsel__free_counts(struct perf_evsel *evsel);