2016-06-30 21:18:56 +08:00
|
|
|
.. -*- 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>
|
|
|
|
|
|
|
|
|
2016-07-02 20:49:16 +08:00
|
|
|
.. cpp:function:: int open( const char *device_name, int flags )
|
2016-06-30 21:18:56 +08:00
|
|
|
|
|
|
|
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
|
2016-07-02 00:58:44 +08:00
|
|
|
with :ref:`FE_GET_INFO`.
|
2016-06-30 21:18:56 +08:00
|
|
|
|
|
|
|
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
|
|
|
|
.. ------------------------------------------------------------------------------
|