1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 .. c:namespace:: DTV.dmx 3 4 .. _DMX_QBUF: 5 6 ************************* 7 ioctl DMX_QBUF, DMX_DQBUF 8 ************************* 9 10 Name 11 ==== 12 13 DMX_QBUF - DMX_DQBUF - Exchange a buffer with the driver 14 15 .. warning:: this API is still experimental 16 17 Synopsis 18 ======== 19 20 .. c:macro:: DMX_QBUF 21 22 ``int ioctl(int fd, DMX_QBUF, struct dmx_buffer *argp)`` 23 24 .. c:macro:: DMX_DQBUF 25 26 ``int ioctl(int fd, DMX_DQBUF, struct dmx_buffer *argp)`` 27 28 Arguments 29 ========= 30 31 ``fd`` 32 File descriptor returned by :c:func:`open()`. 33 34 ``argp`` 35 Pointer to struct :c:type:`dmx_buffer`. 36 37 Description 38 =========== 39 40 Applications call the ``DMX_QBUF`` ioctl to enqueue an empty 41 (capturing) or filled (output) buffer in the driver's incoming queue. 42 The semantics depend on the selected I/O method. 43 44 To enqueue a buffer applications set the ``index`` field. Valid index 45 numbers range from zero to the number of buffers allocated with 46 :ref:`DMX_REQBUFS` (struct :c:type:`dmx_requestbuffers` ``count``) minus 47 one. The contents of the struct :c:type:`dmx_buffer` returned 48 by a :ref:`DMX_QUERYBUF` ioctl will do as well. 49 50 When ``DMX_QBUF`` is called with a pointer to this structure, it locks the 51 memory pages of the buffer in physical memory, so they cannot be swapped 52 out to disk. Buffers remain locked until dequeued, until the 53 device is closed. 54 55 Applications call the ``DMX_DQBUF`` ioctl to dequeue a filled 56 (capturing) buffer from the driver's outgoing queue. 57 They just set the ``index`` field with the buffer ID to be queued. 58 When ``DMX_DQBUF`` is called with a pointer to struct :c:type:`dmx_buffer`, 59 the driver fills the remaining fields or returns an error code. 60 61 By default ``DMX_DQBUF`` blocks when no buffer is in the outgoing 62 queue. When the ``O_NONBLOCK`` flag was given to the 63 :c:func:`open()` function, ``DMX_DQBUF`` returns 64 immediately with an ``EAGAIN`` error code when no buffer is available. 65 66 The struct :c:type:`dmx_buffer` structure is specified in 67 :ref:`buffer`. 68 69 Return Value 70 ============ 71 72 On success 0 is returned, on error -1 and the ``errno`` variable is set 73 appropriately. The generic error codes are described at the 74 :ref:`Generic Error Codes <gen-errors>` chapter. 75 76 EAGAIN 77 Non-blocking I/O has been selected using ``O_NONBLOCK`` and no 78 buffer was in the outgoing queue. 79 80 EINVAL 81 The ``index`` is out of bounds, or no buffers have been allocated yet. 82 83 EIO 84 ``DMX_DQBUF`` failed due to an internal error. Can also indicate 85 temporary problems like signal loss or CRC errors.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.