154f38fcaSMauro Carvalho Chehab.. Permission is granted to copy, distribute and/or modify this
254f38fcaSMauro Carvalho Chehab.. document under the terms of the GNU Free Documentation License,
354f38fcaSMauro Carvalho Chehab.. Version 1.1 or any later version published by the Free Software
454f38fcaSMauro Carvalho Chehab.. Foundation, with no Invariant Sections, no Front-Cover Texts
554f38fcaSMauro Carvalho Chehab.. and no Back-Cover Texts. A copy of the license is included at
654f38fcaSMauro Carvalho Chehab.. Documentation/userspace-api/media/fdl-appendix.rst.
754f38fcaSMauro Carvalho Chehab..
854f38fcaSMauro Carvalho Chehab.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho Chehab.. _cec-func-open:
1154f38fcaSMauro Carvalho Chehab
1254f38fcaSMauro Carvalho Chehab**********
1354f38fcaSMauro Carvalho Chehabcec open()
1454f38fcaSMauro Carvalho Chehab**********
1554f38fcaSMauro Carvalho Chehab
1654f38fcaSMauro Carvalho ChehabName
1754f38fcaSMauro Carvalho Chehab====
1854f38fcaSMauro Carvalho Chehab
1954f38fcaSMauro Carvalho Chehabcec-open - Open a cec device
2054f38fcaSMauro Carvalho Chehab
2154f38fcaSMauro Carvalho ChehabSynopsis
2254f38fcaSMauro Carvalho Chehab========
2354f38fcaSMauro Carvalho Chehab
2454f38fcaSMauro Carvalho Chehab.. code-block:: c
2554f38fcaSMauro Carvalho Chehab
2654f38fcaSMauro Carvalho Chehab    #include <fcntl.h>
2754f38fcaSMauro Carvalho Chehab
2854f38fcaSMauro Carvalho Chehab
2954f38fcaSMauro Carvalho Chehab.. c:function:: int open( const char *device_name, int flags )
3054f38fcaSMauro Carvalho Chehab   :name: cec-open
3154f38fcaSMauro Carvalho Chehab
3254f38fcaSMauro Carvalho Chehab
3354f38fcaSMauro Carvalho ChehabArguments
3454f38fcaSMauro Carvalho Chehab=========
3554f38fcaSMauro Carvalho Chehab
3654f38fcaSMauro Carvalho Chehab``device_name``
3754f38fcaSMauro Carvalho Chehab    Device to be opened.
3854f38fcaSMauro Carvalho Chehab
3954f38fcaSMauro Carvalho Chehab``flags``
4054f38fcaSMauro Carvalho Chehab    Open flags. Access mode must be ``O_RDWR``.
4154f38fcaSMauro Carvalho Chehab
4254f38fcaSMauro Carvalho Chehab    When the ``O_NONBLOCK`` flag is given, the
4354f38fcaSMauro Carvalho Chehab    :ref:`CEC_RECEIVE <CEC_RECEIVE>` and :ref:`CEC_DQEVENT <CEC_DQEVENT>` ioctls
4454f38fcaSMauro Carvalho Chehab    will return the ``EAGAIN`` error code when no message or event is available, and
4554f38fcaSMauro Carvalho Chehab    ioctls :ref:`CEC_TRANSMIT <CEC_TRANSMIT>`,
4654f38fcaSMauro Carvalho Chehab    :ref:`CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>` and
4754f38fcaSMauro Carvalho Chehab    :ref:`CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
4854f38fcaSMauro Carvalho Chehab    all return 0.
4954f38fcaSMauro Carvalho Chehab
5054f38fcaSMauro Carvalho Chehab    Other flags have no effect.
5154f38fcaSMauro Carvalho Chehab
5254f38fcaSMauro Carvalho Chehab
5354f38fcaSMauro Carvalho ChehabDescription
5454f38fcaSMauro Carvalho Chehab===========
5554f38fcaSMauro Carvalho Chehab
5654f38fcaSMauro Carvalho ChehabTo open a cec device applications call :c:func:`open() <cec-open>` with the
5754f38fcaSMauro Carvalho Chehabdesired device name. The function has no side effects; the device
5854f38fcaSMauro Carvalho Chehabconfiguration remain unchanged.
5954f38fcaSMauro Carvalho Chehab
6054f38fcaSMauro Carvalho ChehabWhen the device is opened in read-only mode, attempts to modify its
6154f38fcaSMauro Carvalho Chehabconfiguration will result in an error, and ``errno`` will be set to
6254f38fcaSMauro Carvalho ChehabEBADF.
6354f38fcaSMauro Carvalho Chehab
6454f38fcaSMauro Carvalho Chehab
6554f38fcaSMauro Carvalho ChehabReturn Value
6654f38fcaSMauro Carvalho Chehab============
6754f38fcaSMauro Carvalho Chehab
6854f38fcaSMauro Carvalho Chehab:c:func:`open() <cec-open>` returns the new file descriptor on success. On error,
6954f38fcaSMauro Carvalho Chehab-1 is returned, and ``errno`` is set appropriately. Possible error codes
7054f38fcaSMauro Carvalho Chehabinclude:
7154f38fcaSMauro Carvalho Chehab
7254f38fcaSMauro Carvalho Chehab``EACCES``
7354f38fcaSMauro Carvalho Chehab    The requested access to the file is not allowed.
7454f38fcaSMauro Carvalho Chehab
7554f38fcaSMauro Carvalho Chehab``EMFILE``
7654f38fcaSMauro Carvalho Chehab    The process already has the maximum number of files open.
7754f38fcaSMauro Carvalho Chehab
7854f38fcaSMauro Carvalho Chehab``ENFILE``
7954f38fcaSMauro Carvalho Chehab    The system limit on the total number of open files has been reached.
8054f38fcaSMauro Carvalho Chehab
8154f38fcaSMauro Carvalho Chehab``ENOMEM``
8254f38fcaSMauro Carvalho Chehab    Insufficient kernel memory was available.
8354f38fcaSMauro Carvalho Chehab
8454f38fcaSMauro Carvalho Chehab``ENXIO``
8554f38fcaSMauro Carvalho Chehab    No device corresponding to this device special file exists.
86