From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752217AbbDALz2 (ORCPT ); Wed, 1 Apr 2015 07:55:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50674 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750733AbbDALz0 (ORCPT ); Wed, 1 Apr 2015 07:55:26 -0400 Date: Wed, 1 Apr 2015 13:54:53 +0200 From: Jiri Olsa To: Adrian Hunter Cc: Peter Zijlstra , Arnaldo Carvalho de Melo , linux-kernel@vger.kernel.org, David Ahern , Frederic Weisbecker , Namhyung Kim , Stephane Eranian Subject: Re: [PATCH V7 06/25] perf record: Extend -m option for AUX area tracing mmap pages Message-ID: <20150401115453.GF6992@krava.brq.redhat.com> References: <1427801934-25588-1-git-send-email-adrian.hunter@intel.com> <1427801934-25588-7-git-send-email-adrian.hunter@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1427801934-25588-7-git-send-email-adrian.hunter@intel.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 31, 2015 at 02:38:35PM +0300, Adrian Hunter wrote: > Extend the -m option so that the number > of mmap pages for AUX area tracing > can be specified by adding a comma followed > by the number of pages. Acked-by: Jiri Olsa > > Signed-off-by: Adrian Hunter > --- > tools/perf/Documentation/perf-record.txt | 2 ++ > tools/perf/builtin-record.c | 49 ++++++++++++++++++++++++++++++-- > tools/perf/util/evlist.c | 10 +++++-- > tools/perf/util/evlist.h | 1 + > 4 files changed, 56 insertions(+), 6 deletions(-) > > diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt > index 355c4f5..e78dd80 100644 > --- a/tools/perf/Documentation/perf-record.txt > +++ b/tools/perf/Documentation/perf-record.txt > @@ -108,6 +108,8 @@ OPTIONS > Number of mmap data pages (must be a power of two) or size > specification with appended unit character - B/K/M/G. The > size is rounded up to have nearest pages power of two value. > + Also, by adding a comma, the number of mmap pages for AUX > + area tracing can be specified. > > --group:: > Put all events in a single event group. This precedes the --event > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index 0de9432..56502e5 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -771,6 +771,49 @@ static int perf_record_config(const char *var, const char *value, void *cb) > return perf_default_config(var, value, cb); > } > > +static int record__parse_mmap_pages(const struct option *opt, > + const char *str, > + int unset __maybe_unused) > +{ > + struct record_opts *opts = opt->value; > + char *s, *p; > + unsigned int mmap_pages; > + int ret; > + > + if (!str) > + return -EINVAL; > + > + s = strdup(str); > + if (!s) > + return -ENOMEM; > + > + p = strchr(s, ','); > + if (p) > + *p = '\0'; > + > + if (*s) { > + ret = __perf_evlist__parse_mmap_pages(&mmap_pages, s); > + if (ret) > + goto out_free; > + opts->mmap_pages = mmap_pages; > + } > + > + if (!p) { > + ret = 0; > + goto out_free; > + } > + > + ret = __perf_evlist__parse_mmap_pages(&mmap_pages, p + 1); > + if (ret) > + goto out_free; > + > + opts->auxtrace_mmap_pages = mmap_pages; > + > +out_free: > + free(s); > + return ret; > +} > + > static const char * const __record_usage[] = { > "perf record [] []", > "perf record [] -- []", > @@ -851,9 +894,9 @@ struct option __record_options[] = { > &record.opts.no_inherit_set, > "child tasks do not inherit counters"), > OPT_UINTEGER('F', "freq", &record.opts.user_freq, "profile at this frequency"), > - OPT_CALLBACK('m', "mmap-pages", &record.opts.mmap_pages, "pages", > - "number of mmap data pages", > - perf_evlist__parse_mmap_pages), > + OPT_CALLBACK('m', "mmap-pages", &record.opts, "pages[,pages]", > + "number of mmap data pages and AUX area tracing mmap pages", > + record__parse_mmap_pages), > OPT_BOOLEAN(0, "group", &record.opts.group, > "put the counters into a counter group"), > OPT_CALLBACK_NOOPT('g', NULL, &record.opts, > diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c > index 3481265..9a2243f 100644 > --- a/tools/perf/util/evlist.c > +++ b/tools/perf/util/evlist.c > @@ -1000,10 +1000,8 @@ static long parse_pages_arg(const char *str, unsigned long min, > return pages; > } > > -int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str, > - int unset __maybe_unused) > +int __perf_evlist__parse_mmap_pages(unsigned int *mmap_pages, const char *str) > { > - unsigned int *mmap_pages = opt->value; > unsigned long max = UINT_MAX; > long pages; > > @@ -1020,6 +1018,12 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str, > return 0; > } > > +int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str, > + int unset __maybe_unused) > +{ > + return __perf_evlist__parse_mmap_pages(opt->value, str); > +} > + > /** > * perf_evlist__mmap_ex - Create mmaps to receive events. > * @evlist: list of events > diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h > index beed571..221ac3d 100644 > --- a/tools/perf/util/evlist.h > +++ b/tools/perf/util/evlist.h > @@ -124,6 +124,7 @@ int perf_evlist__start_workload(struct perf_evlist *evlist); > > struct option; > > +int __perf_evlist__parse_mmap_pages(unsigned int *mmap_pages, const char *str); > int perf_evlist__parse_mmap_pages(const struct option *opt, > const char *str, > int unset); > -- > 1.9.1 >