From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751952AbcF0Rpv (ORCPT ); Mon, 27 Jun 2016 13:45:51 -0400 Received: from mail.kernel.org ([198.145.29.136]:60292 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751638AbcF0Rpt (ORCPT ); Mon, 27 Jun 2016 13:45:49 -0400 Date: Mon, 27 Jun 2016 14:45:42 -0300 From: Arnaldo Carvalho de Melo To: Wang Nan Cc: jolsa@redhat.com, linux-kernel@vger.kernel.org, pi3orama@163.com, lizefan@huawei.com, Arnaldo Carvalho de Melo , Jiri Olsa , Masami Hiramatsu , Namhyung Kim , He Kuang , Nilay Vaish Subject: Re: [PATCH v11 01/10] perf record: Prepare mmap multiple evlists Message-ID: <20160627174542.GC27027@kernel.org> References: <1467023052-146749-1-git-send-email-wangnan0@huawei.com> <1467023052-146749-2-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1467023052-146749-2-git-send-email-wangnan0@huawei.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.6.1 (2016-04-27) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Mon, Jun 27, 2016 at 10:24:03AM +0000, Wang Nan escreveu: > Following commits introduce multiple evlists to record. This patch > extracts perf_evlist__mmap_ex() processing to a new function, creates > record__mmap() and record__mmap_evlist() to wrap perf_evlist__mmap_ex() > and its error processing. They will be improvemented to create mmap > for all evlists. Thanks for following my suggestion, as you can see this patch has value irrespective of the other patches in this series and can be applied straight away. - Arnaldo > Signed-off-by: Wang Nan > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Masami Hiramatsu > Cc: Namhyung Kim > Cc: Zefan Li > Cc: He Kuang > Cc: Nilay Vaish > --- > tools/perf/builtin-record.c | 56 +++++++++++++++++++++++++++++---------------- > 1 file changed, 36 insertions(+), 20 deletions(-) > > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index 81411b1..7eb8d7d 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -342,6 +342,40 @@ int auxtrace_record__snapshot_start(struct auxtrace_record *itr __maybe_unused) > > #endif > > +static int record__mmap_evlist(struct record *rec, > + struct perf_evlist *evlist) > +{ > + struct record_opts *opts = &rec->opts; > + char msg[512]; > + > + if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false, > + opts->auxtrace_mmap_pages, > + opts->auxtrace_snapshot_mode) < 0) { > + if (errno == EPERM) { > + pr_err("Permission error mapping pages.\n" > + "Consider increasing " > + "/proc/sys/kernel/perf_event_mlock_kb,\n" > + "or try again with a smaller value of -m/--mmap_pages.\n" > + "(current value: %u,%u)\n", > + opts->mmap_pages, opts->auxtrace_mmap_pages); > + return -errno; > + } else { > + pr_err("failed to mmap with %d (%s)\n", errno, > + strerror_r(errno, msg, sizeof(msg))); > + if (errno) > + return -errno; > + else > + return -EINVAL; > + } > + } > + return 0; > +} > + > +static int record__mmap(struct record *rec) > +{ > + return record__mmap_evlist(rec, rec->evlist); > +} > + > static int record__open(struct record *rec) > { > char msg[512]; > @@ -378,27 +412,9 @@ try_again: > goto out; > } > > - if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false, > - opts->auxtrace_mmap_pages, > - opts->auxtrace_snapshot_mode) < 0) { > - if (errno == EPERM) { > - pr_err("Permission error mapping pages.\n" > - "Consider increasing " > - "/proc/sys/kernel/perf_event_mlock_kb,\n" > - "or try again with a smaller value of -m/--mmap_pages.\n" > - "(current value: %u,%u)\n", > - opts->mmap_pages, opts->auxtrace_mmap_pages); > - rc = -errno; > - } else { > - pr_err("failed to mmap with %d (%s)\n", errno, > - strerror_r(errno, msg, sizeof(msg))); > - if (errno) > - rc = -errno; > - else > - rc = -EINVAL; > - } > + rc = record__mmap(rec); > + if (rc) > goto out; > - } > > session->evlist = evlist; > perf_session__set_id_hdr_size(session); > -- > 1.8.3.4