From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751115AbcGNB66 (ORCPT ); Wed, 13 Jul 2016 21:58:58 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:49977 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750926AbcGNB6w (ORCPT ); Wed, 13 Jul 2016 21:58:52 -0400 Subject: Re: [PATCH v15 03/12] perf tools: Update perf evlist mmap related APIs and helpers To: Jiri Olsa References: <1468317612-11598-1-git-send-email-wangnan0@huawei.com> <1468317612-11598-4-git-send-email-wangnan0@huawei.com> <20160713140637.GB31742@krava> CC: , , , , Arnaldo Carvalho de Melo , He Kuang , Jiri Olsa , Masami Hiramatsu , Namhyung Kim , Nilay Vaish From: "Wangnan (F)" Message-ID: <5786F1B1.40307@huawei.com> Date: Thu, 14 Jul 2016 09:58:09 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <20160713140637.GB31742@krava> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.66.109] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090203.5786F1D3.00DB,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 95160e729c5d51e830e9794b8f449ebd Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016/7/13 22:06, Jiri Olsa wrote: > On Tue, Jul 12, 2016 at 10:00:03AM +0000, Wang Nan wrote: > > SNIP > >> -union perf_event *perf_evlist__mmap_read_forward(struct perf_evlist *evlist, int idx) >> +union perf_event *perf_mmap__read_forward(struct perf_mmap *md, bool overwrite) >> { >> - struct perf_mmap *md = &evlist->mmap[idx]; >> u64 head; >> u64 old = md->prev; >> >> @@ -795,13 +795,12 @@ union perf_event *perf_evlist__mmap_read_forward(struct perf_evlist *evlist, int >> >> head = perf_mmap__read_head(md); >> >> - return perf_mmap__read(md, evlist->overwrite, old, head, &md->prev); >> + return perf_mmap__read(md, overwrite, old, head, &md->prev); >> } >> >> union perf_event * >> -perf_evlist__mmap_read_backward(struct perf_evlist *evlist, int idx) >> +perf_mmap__read_backward(struct perf_mmap *md, bool overwrite __maybe_unused) >> { >> - struct perf_mmap *md = &evlist->mmap[idx]; >> u64 head, end; >> u64 start = md->prev; >> >> @@ -836,6 +835,20 @@ perf_evlist__mmap_read_backward(struct perf_evlist *evlist, int idx) >> return perf_mmap__read(md, false, start, end, &md->prev); > should you pas evlist->overwrite in here? No need. The second arg of perf_mmap__read() is not 'overwrite', but 'check_messup'. When set to 'true', stop reading if caller require a buffer larger than half of the size of the ring buffer and report a warning. Only forward, read-only ring buffer requires this check. We can always read the whole backward ring buffer because we pause it before reading. I'll add more comments here. Thank you. > thanks, > jirka