~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/userspace-api/media/dvb/dmx-qbuf.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php