From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753086AbcGMOHo (ORCPT ); Wed, 13 Jul 2016 10:07:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58181 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753051AbcGMOHi (ORCPT ); Wed, 13 Jul 2016 10:07:38 -0400 Date: Wed, 13 Jul 2016 16:07:01 +0200 From: Jiri Olsa To: Wang Nan Cc: acme@kernel.org, lizefan@huawei.com, linux-kernel@vger.kernel.org, pi3orama@163.com, He Kuang , Arnaldo Carvalho de Melo , Jiri Olsa , Masami Hiramatsu , Namhyung Kim , Nilay Vaish Subject: Re: [PATCH v15 09/12] perf record: Read from overwritable ring buffer Message-ID: <20160713140701.GD31742@krava> References: <1468317612-11598-1-git-send-email-wangnan0@huawei.com> <1468317612-11598-10-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1468317612-11598-10-git-send-email-wangnan0@huawei.com> User-Agent: Mutt/1.6.2 (2016-07-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 13 Jul 2016 14:07:04 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 12, 2016 at 10:00:09AM +0000, Wang Nan wrote: SNIP > @@ -131,9 +156,10 @@ rb_find_range(void *data, int mask, u64 head, u64 old, > return backward_rb_find_range(data, mask, head, start, end); > } > > -static int record__mmap_read(struct record *rec, struct perf_evlist *evlist, int idx) > +static int > +record__mmap_read(struct record *rec, struct perf_mmap *md, > + bool overwrite, bool backward) > { > - struct perf_mmap *md = &evlist->mmap[idx]; > u64 head = perf_mmap__read_head(md); > u64 old = md->prev; > u64 end = head, start = old; > @@ -143,7 +169,7 @@ static int record__mmap_read(struct record *rec, struct perf_evlist *evlist, int > int rc = 0; > > if (rb_find_range(data, md->mask, head, > - old, &start, &end, false)) > + old, &start, &end, backward)) > return -1; > > if (start == end) > @@ -156,7 +182,7 @@ static int record__mmap_read(struct record *rec, struct perf_evlist *evlist, int > WARN_ONCE(1, "failed to keep up with mmap data. (warn only once)\n"); > > md->prev = head; > - perf_evlist__mmap_consume(evlist, idx); > + perf_mmap__consume(md, overwrite || backward); > return 0; > } > > @@ -181,7 +207,7 @@ static int record__mmap_read(struct record *rec, struct perf_evlist *evlist, int > } > > md->prev = head; > - perf_evlist__mmap_consume(evlist, idx); > + perf_mmap__consume(md, overwrite || backward); > out: > return rc; > } > @@ -341,6 +367,75 @@ int auxtrace_record__snapshot_start(struct auxtrace_record *itr __maybe_unused) could above hunks be moved into separate patch? jirka