^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) .. c:namespace:: DTV.ca
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) .. _ca_fopen:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Digital TV CA open()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Digital TV CA open()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Synopsis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .. c:function:: int open(const char *name, int flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) ---------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ``name``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Name of specific Digital TV CA device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) ``flags``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) A bit-wise OR of the following flags:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) .. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) .. flat-table::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) :widths: 1 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - - ``O_RDONLY``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - read-only access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) - - ``O_RDWR``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) - read/write access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - - ``O_NONBLOCK``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) - open in non-blocking mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) (blocking mode is the default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) This system call opens a named ca device (e.g. ``/dev/dvb/adapter?/ca?``)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) for subsequent use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) When an ``open()`` call has succeeded, the device will be ready for use. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) significance of blocking or non-blocking mode is described in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) documentation for functions where there is a difference. It does not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) affect the semantics of the ``open()`` call itself. A device opened in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) blocking mode can later be put into non-blocking mode (and vice versa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) using the ``F_SETFL`` command of the ``fcntl`` system call. This is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) standard system call, documented in the Linux manual page for fcntl.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) Only one user can open the CA Device in ``O_RDWR`` mode. All other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) attempts to open the device in this mode will fail, and an error code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) will be returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) Return Value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) On success 0 is returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) On error -1 is returned, and the ``errno`` variable is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) appropriately.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) Generic error codes are described at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) :ref:`Generic Error Codes <gen-errors>` chapter.