mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 12:14:01 +08:00
109 lines
3.1 KiB
ReStructuredText
109 lines
3.1 KiB
ReStructuredText
|
.. -*- coding: utf-8; mode: rst -*-
|
||
|
|
||
|
.. _frontend_f_open:
|
||
|
|
||
|
*******************
|
||
|
DVB frontend open()
|
||
|
*******************
|
||
|
|
||
|
*man fe-open(2)*
|
||
|
|
||
|
Open a frontend device
|
||
|
|
||
|
|
||
|
Synopsis
|
||
|
========
|
||
|
|
||
|
.. code-block:: c
|
||
|
|
||
|
#include <fcntl.h>
|
||
|
|
||
|
|
||
|
.. c:function:: int open( const char *device_name, int flags )
|
||
|
|
||
|
Arguments
|
||
|
=========
|
||
|
|
||
|
``device_name``
|
||
|
Device to be opened.
|
||
|
|
||
|
``flags``
|
||
|
Open flags. Access can either be ``O_RDWR`` or ``O_RDONLY``.
|
||
|
|
||
|
Multiple opens are allowed with ``O_RDONLY``. In this mode, only
|
||
|
query and read ioctls are allowed.
|
||
|
|
||
|
Only one open is allowed in ``O_RDWR``. In this mode, all ioctls are
|
||
|
allowed.
|
||
|
|
||
|
When the ``O_NONBLOCK`` flag is given, the system calls may return
|
||
|
EAGAIN error code when no data is available or when the device
|
||
|
driver is temporarily busy.
|
||
|
|
||
|
Other flags have no effect.
|
||
|
|
||
|
|
||
|
Description
|
||
|
===========
|
||
|
|
||
|
This system call opens a named frontend device
|
||
|
(``/dev/dvb/adapter?/frontend?``) for subsequent use. Usually the first
|
||
|
thing to do after a successful open is to find out the frontend type
|
||
|
with :ref:`FE_GET_INFO <FE_GET_INFO>`.
|
||
|
|
||
|
The device can be opened in read-only mode, which only allows monitoring
|
||
|
of device status and statistics, or read/write mode, which allows any
|
||
|
kind of use (e.g. performing tuning operations.)
|
||
|
|
||
|
In a system with multiple front-ends, it is usually the case that
|
||
|
multiple devices cannot be open in read/write mode simultaneously. As
|
||
|
long as a front-end device is opened in read/write mode, other open()
|
||
|
calls in read/write mode will either fail or block, depending on whether
|
||
|
non-blocking or blocking mode was specified. A front-end device opened
|
||
|
in blocking mode can later be put into non-blocking mode (and vice
|
||
|
versa) using the F_SETFL command of the fcntl system call. This is a
|
||
|
standard system call, documented in the Linux manual page for fcntl.
|
||
|
When an open() call has succeeded, the device will be ready for use in
|
||
|
the specified mode. This implies that the corresponding hardware is
|
||
|
powered up, and that other front-ends may have been powered down to make
|
||
|
that possible.
|
||
|
|
||
|
|
||
|
Return Value
|
||
|
============
|
||
|
|
||
|
On success :c:func:`open()` returns the new file descriptor. On error
|
||
|
-1 is returned, and the ``errno`` variable is set appropriately.
|
||
|
Possible error codes are:
|
||
|
|
||
|
EACCES
|
||
|
The caller has no permission to access the device.
|
||
|
|
||
|
EBUSY
|
||
|
The the device driver is already in use.
|
||
|
|
||
|
ENXIO
|
||
|
No device corresponding to this device special file exists.
|
||
|
|
||
|
ENOMEM
|
||
|
Not enough kernel memory was available to complete the request.
|
||
|
|
||
|
EMFILE
|
||
|
The process already has the maximum number of files open.
|
||
|
|
||
|
ENFILE
|
||
|
The limit on the total number of files open on the system has been
|
||
|
reached.
|
||
|
|
||
|
ENODEV
|
||
|
The device got removed.
|
||
|
|
||
|
|
||
|
.. ------------------------------------------------------------------------------
|
||
|
.. This file was automatically converted from DocBook-XML with the dbxml
|
||
|
.. library (https://github.com/return42/sphkerneldoc). The origin XML comes
|
||
|
.. from the linux kernel, refer to:
|
||
|
..
|
||
|
.. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook
|
||
|
.. ------------------------------------------------------------------------------
|