Documentation/userspace-api/media/v4l/func-select.rst
Source file repositories/reference/linux-study-clean/Documentation/userspace-api/media/v4l/func-select.rst
File Facts
- System
- Linux kernel
- Corpus path
Documentation/userspace-api/media/v4l/func-select.rst- Extension
.rst- Size
- 3529 bytes
- Lines
- 117
- Domain
- Support Tooling And Documentation
- Bucket
- Documentation
- Inferred role
- Support Tooling And Documentation: documentation
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
sys/time.hsys/types.hunistd.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. c:namespace:: V4L
.. _func-select:
*************
V4L2 select()
*************
Name
====
v4l2-select - Synchronous I/O multiplexing
Synopsis
========
.. code-block:: c
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
.. c:function:: int select( int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout )
Arguments
=========
``nfds``
The highest-numbered file descriptor in any of the three sets, plus 1.
``readfds``
File descriptions to be watched if a read() call won't block.
``writefds``
File descriptions to be watched if a write() won't block.
``exceptfds``
File descriptions to be watched for V4L2 events.
``timeout``
Maximum time to wait.
Description
===========
With the :c:func:`select()` function applications can suspend
execution until the driver has captured data or is ready to accept data
for output.
When streaming I/O has been negotiated this function waits until a
buffer has been filled or displayed and can be dequeued with the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. When buffers are already in
the outgoing queue of the driver the function returns immediately.
On success :c:func:`select()` returns the total number of bits set in
``fd_set``. When the function timed out it returns
a value of zero. On failure it returns -1 and the ``errno`` variable is
set appropriately. When the application did not call
:ref:`VIDIOC_QBUF` or
:ref:`VIDIOC_STREAMON` yet the :c:func:`select()`
function succeeds, setting the bit of the file descriptor in ``readfds``
or ``writefds``, but subsequent :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`
calls will fail. [#f1]_
When use of the :c:func:`read()` function has been negotiated and the
driver does not capture yet, the :c:func:`select()` function starts
capturing. When that fails, :c:func:`select()` returns successful and
a subsequent :c:func:`read()` call, which also attempts to start
capturing, will return an appropriate error code. When the driver
Annotation
- Immediate include surface: `sys/time.h`, `sys/types.h`, `unistd.h`.
- Atlas domain: Support Tooling And Documentation / Documentation.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.