Hello, On Thu, Dec 21, 2017 at 10:08:46AM -0800, kan.li...@intel.com wrote: > From: Kan Liang <kan.li...@intel.com> > > The direction of overwrite mode is backward. The last mmap__read_event > will set tail to map->prev. Need to correct the map->prev to head which > is the end of next read.
Why do you update the map->prev needlessly then? I think we don't need it for overwrite/backward mode, right? Also I guess the current code might miss some events since the head can be different between _read_init() and _read_done(), no? Thanks, Namhyung > > It will be used later. > > Signed-off-by: Kan Liang <kan.li...@intel.com> > --- > tools/perf/util/mmap.c | 11 +++++++++++ > tools/perf/util/mmap.h | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c > index a844a2f..4aaeb64 100644 > --- a/tools/perf/util/mmap.c > +++ b/tools/perf/util/mmap.c > @@ -343,3 +343,14 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite, > out: > return rc; > } > + > +/* > + * Mandatory for overwrite mode > + * The direction of overwrite mode is backward. > + * The last mmap__read_event will set tail to map->prev. > + * Need to correct the map->prev to head which is the end of next read. > + */ > +void perf_mmap__read_done(struct perf_mmap *map) > +{ > + map->prev = perf_mmap__read_head(map); > +} > diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h > index abe9b9f..2df27c1 100644 > --- a/tools/perf/util/mmap.h > +++ b/tools/perf/util/mmap.h > @@ -96,4 +96,5 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map); > > int perf_mmap__read_init(struct perf_mmap *map, bool overwrite, > u64 *start, u64 *end); > +void perf_mmap__read_done(struct perf_mmap *map); > #endif /*__PERF_MMAP_H */ > -- > 2.5.5 >