On Fri, Jan 22, 2016 at 12:13:49PM +0000, Wang Nan wrote: > Add new ioctl() to pause/resume ring-buffer output. > > In some situations we want to read from ring buffer only when we > ensure nothing can write to the ring buffer during reading. Without > this patch we have to turn off all events attached to this ring buffer. > This patch is for supporting overwritable ring buffer with TAILSIZE > selected.
TAILSIZE is dropped. pls adjust commit log. > Signed-off-by: Wang Nan <wangn...@huawei.com> > Cc: He Kuang <heku...@huawei.com> > Cc: Alexei Starovoitov <a...@kernel.org> > Cc: Arnaldo Carvalho de Melo <a...@redhat.com> > Cc: Brendan Gregg <brendan.d.gr...@gmail.com> > Cc: Jiri Olsa <jo...@kernel.org> > Cc: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> > Cc: Namhyung Kim <namhy...@kernel.org> > Cc: Peter Zijlstra <pet...@infradead.org> > Cc: Zefan Li <lize...@huawei.com> > Cc: pi3or...@163.com > --- > include/uapi/linux/perf_event.h | 1 + > kernel/events/core.c | 13 +++++++++++++ > kernel/events/internal.h | 11 +++++++++++ > kernel/events/ring_buffer.c | 7 ++++++- > 4 files changed, 31 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h > index 1afe962..2c7f00c 100644 > --- a/include/uapi/linux/perf_event.h > +++ b/include/uapi/linux/perf_event.h > @@ -401,6 +401,7 @@ struct perf_event_attr { > #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) > #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *) > #define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32) > +#define PERF_EVENT_IOC_PAUSE_OUTPUT _IO ('$', 9) do you need to add '__u32' here, since boolean flag is passed to it? > + case PERF_EVENT_IOC_PAUSE_OUTPUT: { > + struct ring_buffer *rb; > + > + rcu_read_lock(); > + rb = rcu_dereference(event->rb); > + if (!event->rb) { > + rcu_read_unlock(); > + return -EINVAL; > + } > + rb_toggle_paused(rb, !!arg); > + rcu_read_unlock(); > + return 0; > + }