| .. SPDX-License-Identifier: GPL-2.0 | |
| Digital TV Common functions | |
| --------------------------- | |
| DVB devices | |
| ~~~~~~~~~~~ | |
| Those functions are responsible for handling the DVB device nodes. | |
| .. kernel-doc:: include/media/dvbdev.h | |
| Digital TV Ring buffer | |
| ~~~~~~~~~~~~~~~~~~~~~~ | |
| Those routines implement ring buffers used to handle digital TV data and | |
| copy it from/to userspace. | |
| .. note:: | |
| 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: | |
| .. code-block:: c | |
| /* write @buflen: bytes */ | |
| free = dvb_ringbuffer_free(rbuf); | |
| if (free >= buflen) | |
| count = dvb_ringbuffer_write(rbuf, buffer, buflen); | |
| else | |
| /* do something */ | |
| /* read min. 1000, max. @bufsize: bytes */ | |
| avail = dvb_ringbuffer_avail(rbuf); | |
| if (avail >= 1000) | |
| count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize)); | |
| else | |
| /* do something */ | |
| 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. | |
| Resetting the buffer counts as a read and write operation. | |
| Two or more writers must be locked against each other. | |
| .. kernel-doc:: include/media/dvb_ringbuffer.h | |
| Digital TV VB2 handler | |
| ~~~~~~~~~~~~~~~~~~~~~~ | |
| .. kernel-doc:: include/media/dvb_vb2.h |