On Mon, Oct 08, 2018 at 09:14:29AM +0300, Alexey Budankov wrote: SNIP
> static int overwrite_rb_find_range(void *buf, int mask, u64 *start, u64 *end) > diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h > index e603314dc792..1b63b6cc7cf9 100644 > --- a/tools/perf/util/mmap.h > +++ b/tools/perf/util/mmap.h > @@ -6,6 +6,9 @@ > #include <linux/types.h> > #include <asm/barrier.h> > #include <stdbool.h> > +#ifdef HAVE_AIO_SUPPORT > +#include <aio.h> > +#endif > #include "auxtrace.h" > #include "event.h" > > @@ -26,6 +29,11 @@ struct perf_mmap { > bool overwrite; > struct auxtrace_mmap auxtrace_mmap; > char event_copy[PERF_SAMPLE_MAX_SIZE] __aligned(8); > +#ifdef HAVE_AIO_SUPPORT > + void *data; > + struct aiocb cblock; > + int nr_cblocks; > +#endif could you please separate those in struct, maybe anonymous like: ... struct { void *data; struct aiocb cblock; int nr_cblocks; } aio; ... > }; > > /* > @@ -59,6 +67,9 @@ enum bkw_mmap_state { > struct mmap_params { > int prot, mask; > struct auxtrace_mmap_params auxtrace_mp; > +#ifdef HAVE_AIO_SUPPORT > + int nr_cblocks; > +#endif I dont think we need the ifdef here.. IMO one extra int is not worth of the ifdef endif confusion jirka