ring-buffer: read page interface
authorSteven Rostedt <srostedt@redhat.com>
Tue, 2 Dec 2008 20:34:07 +0000 (15:34 -0500)
committerIngo Molnar <mingo@elte.hu>
Wed, 3 Dec 2008 07:56:21 +0000 (08:56 +0100)
commit8789a9e7df6bf9b93739c4c7d4e380725bc9e936
tree0930b286d987611b4a453766e8479bb005edbc27
parentabc9b56d66fbd4d93302ef4bf6fa726e1b8255f9
ring-buffer: read page interface

Impact: new API to ring buffer

This patch adds a new interface into the ring buffer that allows a
page to be read from the ring buffer on a given CPU. For every page
read, one must also be given to allow for a "swap" of the pages.

 rpage = ring_buffer_alloc_read_page(buffer);
 if (!rpage)
goto err;
 ret = ring_buffer_read_page(buffer, &rpage, cpu, full);
 if (!ret)
goto empty;
 process_page(rpage);
 ring_buffer_free_read_page(rpage);

The caller of these functions must handle any waits that are
needed to wait for new data. The ring_buffer_read_page will simply
return 0 if there is no data, or if "full" is set and the writer
is still on the current page.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/ring_buffer.h
kernel/trace/ring_buffer.c