103 lines
2.7 KiB
ReStructuredText
103 lines
2.7 KiB
ReStructuredText
|
.. -*- coding: utf-8; mode: rst -*-
|
||
|
|
||
|
.. _frontend_f_open:
|
||
|
|
||
|
*******************
|
||
|
DVB frontend open()
|
||
|
*******************
|
||
|
|
||
|
Name
|
||
|
====
|
||
|
|
||
|
fe-open - Open a frontend device
|
||
|
|
||
|
|
||
|
Synopsis
|
||
|
========
|
||
|
|
||
|
.. code-block:: c
|
||
|
|
||
|
#include <fcntl.h>
|
||
|
|
||
|
|
||
|
.. c:function:: int open( const char *device_name, int flags )
|
||
|
:name: dvb-fe-open
|
||
|
|
||
|
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`.
|
||
|
|
||
|
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 :ref:`open() <frontend_f_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.
|