xref: /linux/Documentation/userspace-api/media/v4l/func-open.rst (revision 2c739ced5886cd8c8361faa79a9522ec05174ed0)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _func-open:
4
5***********
6V4L2 open()
7***********
8
9Name
10====
11
12v4l2-open - Open a V4L2 device
13
14
15Synopsis
16========
17
18.. code-block:: c
19
20    #include <fcntl.h>
21
22
23.. c:function:: int open( const char *device_name, int flags )
24    :name: v4l2-open
25
26Arguments
27=========
28
29``device_name``
30    Device to be opened.
31
32``flags``
33    Open flags. Access mode must be ``O_RDWR``. This is just a
34    technicality, input devices still support only reading and output
35    devices only writing.
36
37    When the ``O_NONBLOCK`` flag is given, the :ref:`read() <func-read>`
38    function and the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will
39    return the ``EAGAIN`` error code when no data is available or no
40    buffer is in the driver outgoing queue, otherwise these functions
41    block until data becomes available. All V4L2 drivers exchanging data
42    with applications must support the ``O_NONBLOCK`` flag.
43
44    Other flags have no effect.
45
46
47Description
48===========
49
50To open a V4L2 device applications call :ref:`open() <func-open>` with the
51desired device name. This function has no side effects; all data format
52parameters, current input or output, control values or other properties
53remain unchanged. At the first :ref:`open() <func-open>` call after loading the
54driver they will be reset to default values, drivers are never in an
55undefined state.
56
57
58Return Value
59============
60
61On success :ref:`open() <func-open>` returns the new file descriptor. On error
62-1 is returned, and the ``errno`` variable is set appropriately.
63Possible error codes are:
64
65EACCES
66    The caller has no permission to access the device.
67
68EBUSY
69    The driver does not support multiple opens and the device is already
70    in use.
71
72ENXIO
73    No device corresponding to this device special file exists.
74
75ENOMEM
76    Not enough kernel memory was available to complete the request.
77
78EMFILE
79    The process already has the maximum number of files open.
80
81ENFILE
82    The limit on the total number of files open on the system has been
83    reached.
84