#Applies against: 2.6.17 #Signed-off-by: Uwe Bugla <uwe.bugla@xxxxxx> #Changes: fix type and / or tab errors, extracts documentary parts out of the module and transforms them into a documentary text file --- a/drivers/media/dvb/dvb-core/dvb_ringbuffer.h 2006-05-27 14:03:00 +++ b/drivers/media/dvb/dvb-core/dvb_ringbuffer.h 2006-05-28 17:45:00 @@ -40,67 +40,27 @@ wait_queue_head_t queue; spinlock_t lock; }; - #define DVB_RINGBUFFER_PKTHDRSIZE 3 - - -/* -** Notes: -** ------ -** (1) For performance reasons read and write routines don't check buffer sizes -** and/or number of bytes free/available. This has to be done before these -** routines are called. For example: -** -** *** write <buflen> bytes *** -** free = dvb_ringbuffer_free(rbuf); -** if (free >= buflen) -** count = dvb_ringbuffer_write(rbuf, buffer, buflen); -** else -** ... -** -** *** read min. 1000, max. <bufsize> bytes *** -** avail = dvb_ringbuffer_avail(rbuf); -** if (avail >= 1000) -** count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize), 0); -** else -** ... -** -** (2) If there is exactly one reader and one writer, there is no need -** to lock read or write operations. -** Two or more readers must be locked against each other. -** Flushing the buffer counts as a read operation. -** Two or more writers must be locked against each other. -*/ /* initialize ring buffer, lock and queue */ extern void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data, size_t len); - /* test whether buffer is empty */ extern int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf); - /* return the number of free bytes in the buffer */ extern ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf); - /* return the number of bytes waiting in the buffer */ extern ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf); - - /* read routines & macros */ -/* ---------------------- */ /* flush buffer */ extern void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf); - /* flush buffer protected by spinlock and wake-up waiting task(s) */ extern void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf); - /* peek at byte <offs> in the buffer */ #define DVB_RINGBUFFER_PEEK(rbuf,offs) \ (rbuf)->data[((rbuf)->pread+(offs))%(rbuf)->size] - /* advance read ptr by <num> bytes */ #define DVB_RINGBUFFER_SKIP(rbuf,num) \ (rbuf)->pread=((rbuf)->pread+(num))%(rbuf)->size - /* ** read <len> bytes from ring buffer into <buf> ** <usermem> specifies whether <buf> resides in user space --- a/dev/null 2006-05-27 14:03:00 +++ b/Documentation/dvb/dvb_ringbuffer.txt 2006-05-28 17:45:00 @@ -0,0 +1,18 @@ +Notes on this module: +(1) For performance reasons read and write routines don't check buffer sizes + and/or number of bytes free/available. This has to be done before these routines are called. +For example: +*** write <buflen> bytes *** +free = dvb_ringbuffer_free(rbuf); +if (free >= buflen) +count = dvb_ringbuffer_write(rbuf, buffer, buflen); +else +*** read min. 1000, max. <bufsize> bytes *** +avail = dvb_ringbuffer_avail(rbuf); +if (avail >= 1000) +count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize), 0); +else + +(2) If there is exactly one reader and one writer, there is no need to lock read or write operations. + Two or more readers must be locked against each other. Flushing the buffer counts as a read operation. + Two or more writers must be locked against each other. -- Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb