From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932152AbcEMNJH (ORCPT ); Fri, 13 May 2016 09:09:07 -0400 Received: from mail.kernel.org ([198.145.29.136]:34748 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751631AbcEMNJE (ORCPT ); Fri, 13 May 2016 09:09:04 -0400 Date: Fri, 13 May 2016 10:08:54 -0300 From: Arnaldo Carvalho de Melo To: Wang Nan Cc: arnaldo.melo@gmail.com, linux-kernel@vger.kernel.org, He Kuang , Arnaldo Carvalho de Melo , Jiri Olsa , Masami Hiramatsu , Namhyung Kim , Zefan Li , pi3orama@163.com Subject: Re: [PATCH 09/17] perf tools: Detect avalibility of write_backward Message-ID: <20160513130854.GI11346@kernel.org> References: <1463126174-119290-1-git-send-email-wangnan0@huawei.com> <1463126174-119290-10-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1463126174-119290-10-git-send-email-wangnan0@huawei.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Fri, May 13, 2016 at 07:56:06AM +0000, Wang Nan escreveu: > Detect avalibility of write_backward and save the result into > record_opts. With write_backward the start pointer of a ring > buffer mapped read only can be found reliably. We have perf_missing_features for that, please try to use it. - Arnaldo > Signed-off-by: Wang Nan > Signed-off-by: He Kuang > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Masami Hiramatsu > Cc: Namhyung Kim > Cc: Zefan Li > Cc: pi3orama@163.com > --- > tools/perf/perf.h | 1 + > tools/perf/util/record.c | 11 +++++++++++ > 2 files changed, 12 insertions(+) > > diff --git a/tools/perf/perf.h b/tools/perf/perf.h > index cd8f1b1..c35bcfd 100644 > --- a/tools/perf/perf.h > +++ b/tools/perf/perf.h > @@ -72,6 +72,7 @@ struct record_opts { > bool sample_transaction; > unsigned initial_delay; > bool use_clockid; > + bool has_write_backward; > clockid_t clockid; > unsigned int proc_map_timeout; > }; > diff --git a/tools/perf/util/record.c b/tools/perf/util/record.c > index 481792c..bb871d8 100644 > --- a/tools/perf/util/record.c > +++ b/tools/perf/util/record.c > @@ -85,6 +85,11 @@ static void perf_probe_comm_exec(struct perf_evsel *evsel) > evsel->attr.comm_exec = 1; > } > > +static void perf_probe_write_backward(struct perf_evsel *evsel) > +{ > + evsel->attr.write_backward = 1; > +} > + > static void perf_probe_context_switch(struct perf_evsel *evsel) > { > evsel->attr.context_switch = 1; > @@ -105,6 +110,11 @@ bool perf_can_record_switch_events(void) > return perf_probe_api(perf_probe_context_switch); > } > > +static bool perf_can_write_backward(void) > +{ > + return perf_probe_api(perf_probe_write_backward); > +} > + > bool perf_can_record_cpu_wide(void) > { > struct perf_event_attr attr = { > @@ -236,6 +246,7 @@ static int record_opts__config_freq(struct record_opts *opts) > > int record_opts__config(struct record_opts *opts) > { > + opts->has_write_backward = perf_can_write_backward(); > return record_opts__config_freq(opts); > } > > -- > 1.8.3.4