162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci.. c:namespace:: CEC
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci.. _cec-func-open:
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci**********
762306a36Sopenharmony_cicec open()
862306a36Sopenharmony_ci**********
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciName
1162306a36Sopenharmony_ci====
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cicec-open - Open a cec device
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSynopsis
1662306a36Sopenharmony_ci========
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. code-block:: c
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci    #include <fcntl.h>
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci.. c:function:: int open( const char *device_name, int flags )
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciArguments
2562306a36Sopenharmony_ci=========
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci``device_name``
2862306a36Sopenharmony_ci    Device to be opened.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci``flags``
3162306a36Sopenharmony_ci    Open flags. Access mode must be ``O_RDWR``.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci    When the ``O_NONBLOCK`` flag is given, the
3462306a36Sopenharmony_ci    :ref:`CEC_RECEIVE <CEC_RECEIVE>` and :ref:`CEC_DQEVENT <CEC_DQEVENT>` ioctls
3562306a36Sopenharmony_ci    will return the ``EAGAIN`` error code when no message or event is available, and
3662306a36Sopenharmony_ci    ioctls :ref:`CEC_TRANSMIT <CEC_TRANSMIT>`,
3762306a36Sopenharmony_ci    :ref:`CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>` and
3862306a36Sopenharmony_ci    :ref:`CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
3962306a36Sopenharmony_ci    all return 0.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci    Other flags have no effect.
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciDescription
4462306a36Sopenharmony_ci===========
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciTo open a cec device applications call :c:func:`open()` with the
4762306a36Sopenharmony_cidesired device name. The function has no side effects; the device
4862306a36Sopenharmony_ciconfiguration remain unchanged.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciWhen the device is opened in read-only mode, attempts to modify its
5162306a36Sopenharmony_ciconfiguration will result in an error, and ``errno`` will be set to
5262306a36Sopenharmony_ciEBADF.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciReturn Value
5562306a36Sopenharmony_ci============
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci:c:func:`open()` returns the new file descriptor on success. On error,
5862306a36Sopenharmony_ci-1 is returned, and ``errno`` is set appropriately. Possible error codes
5962306a36Sopenharmony_ciinclude:
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci``EACCES``
6262306a36Sopenharmony_ci    The requested access to the file is not allowed.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci``EMFILE``
6562306a36Sopenharmony_ci    The process already has the maximum number of files open.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci``ENFILE``
6862306a36Sopenharmony_ci    The system limit on the total number of open files has been reached.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci``ENOMEM``
7162306a36Sopenharmony_ci    Insufficient kernel memory was available.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci``ENXIO``
7462306a36Sopenharmony_ci    No device corresponding to this device special file exists.
75