include/media/dvb_ringbuffer.h

Source file repositories/reference/linux-study-clean/include/media/dvb_ringbuffer.h

File Facts

System
Linux kernel
Corpus path
include/media/dvb_ringbuffer.h
Extension
.h
Size
8524 bytes
Lines
281
Domain
Repository Root And Misc
Bucket
include
Inferred role
Repository Root And Misc: implementation source
Status
source implementation candidate

Why This File Exists

Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.

Dependency Surface

Detected Declarations

Annotated Snippet

struct dvb_ringbuffer {
	u8               *data;
	ssize_t           size;
	ssize_t           pread;
	ssize_t           pwrite;
	int               error;

	wait_queue_head_t queue;
	spinlock_t        lock;
};

#define DVB_RINGBUFFER_PKTHDRSIZE 3

/**
 * dvb_ringbuffer_init - initialize ring buffer, lock and queue
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 * @data: pointer to the buffer where the data will be stored
 * @len: bytes from ring buffer into @buf
 */
extern void dvb_ringbuffer_init(struct dvb_ringbuffer *rbuf, void *data,
				size_t len);

/**
 * dvb_ringbuffer_empty - test whether buffer is empty
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 */
extern int dvb_ringbuffer_empty(struct dvb_ringbuffer *rbuf);

/**
 * dvb_ringbuffer_free - returns the number of free bytes in the buffer
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 *
 * Return: number of free bytes in the buffer
 */
extern ssize_t dvb_ringbuffer_free(struct dvb_ringbuffer *rbuf);

/**
 * dvb_ringbuffer_avail - returns the number of bytes waiting in the buffer
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 *
 * Return: number of bytes waiting in the buffer
 */
extern ssize_t dvb_ringbuffer_avail(struct dvb_ringbuffer *rbuf);

/**
 * dvb_ringbuffer_reset - resets the ringbuffer to initial state
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 *
 * Resets the read and write pointers to zero and flush the buffer.
 *
 * This counts as a read and write operation
 */
extern void dvb_ringbuffer_reset(struct dvb_ringbuffer *rbuf);

/*
 * read routines & macros
 */

/**
 * dvb_ringbuffer_flush - flush buffer
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 */
extern void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf);

/**
 * dvb_ringbuffer_flush_spinlock_wakeup- flush buffer protected by spinlock
 *      and wake-up waiting task(s)
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 */
extern void dvb_ringbuffer_flush_spinlock_wakeup(struct dvb_ringbuffer *rbuf);

/**
 * DVB_RINGBUFFER_PEEK - peek at byte @offs in the buffer
 *
 * @rbuf: pointer to struct dvb_ringbuffer
 * @offs: offset inside the ringbuffer
 */
#define DVB_RINGBUFFER_PEEK(rbuf, offs)	\
			((rbuf)->data[((rbuf)->pread + (offs)) % (rbuf)->size])

/**
 * DVB_RINGBUFFER_SKIP - advance read ptr by @num bytes
 *

Annotation

Implementation Notes