blob: e0c55345f524a13d9fe2cbaea3fcd5a80c38ea64 [file] [log] [blame]
Markus Heiser5377d912016-06-30 15:18:56 +02001.. -*- coding: utf-8; mode: rst -*-
2
3.. _frontend_f_open:
4
5*******************
6DVB frontend open()
7*******************
8
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -03009Name
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030010====
Markus Heiser5377d912016-06-30 15:18:56 +020011
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030012fe-open - Open a frontend device
Markus Heiser5377d912016-06-30 15:18:56 +020013
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030014
15Synopsis
Markus Heiser5377d912016-06-30 15:18:56 +020016========
17
18.. code-block:: c
19
20 #include <fcntl.h>
21
22
Mauro Carvalho Chehabb7e67f62016-07-02 09:49:16 -030023.. cpp:function:: int open( const char *device_name, int flags )
Markus Heiser5377d912016-06-30 15:18:56 +020024
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030025
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030026Arguments
Markus Heiser5377d912016-06-30 15:18:56 +020027=========
28
29``device_name``
30 Device to be opened.
31
32``flags``
33 Open flags. Access can either be ``O_RDWR`` or ``O_RDONLY``.
34
35 Multiple opens are allowed with ``O_RDONLY``. In this mode, only
36 query and read ioctls are allowed.
37
38 Only one open is allowed in ``O_RDWR``. In this mode, all ioctls are
39 allowed.
40
41 When the ``O_NONBLOCK`` flag is given, the system calls may return
Mauro Carvalho Chehabcdb4af02016-07-03 11:53:09 -030042 ``EAGAIN`` error code when no data is available or when the device
Markus Heiser5377d912016-06-30 15:18:56 +020043 driver is temporarily busy.
44
45 Other flags have no effect.
46
47
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030048Description
Markus Heiser5377d912016-06-30 15:18:56 +020049===========
50
51This system call opens a named frontend device
52(``/dev/dvb/adapter?/frontend?``) for subsequent use. Usually the first
53thing to do after a successful open is to find out the frontend type
Mauro Carvalho Chehab73470812016-07-01 13:58:44 -030054with :ref:`FE_GET_INFO`.
Markus Heiser5377d912016-06-30 15:18:56 +020055
56The device can be opened in read-only mode, which only allows monitoring
57of device status and statistics, or read/write mode, which allows any
58kind of use (e.g. performing tuning operations.)
59
60In a system with multiple front-ends, it is usually the case that
61multiple devices cannot be open in read/write mode simultaneously. As
62long as a front-end device is opened in read/write mode, other open()
63calls in read/write mode will either fail or block, depending on whether
64non-blocking or blocking mode was specified. A front-end device opened
65in blocking mode can later be put into non-blocking mode (and vice
66versa) using the F_SETFL command of the fcntl system call. This is a
67standard system call, documented in the Linux manual page for fcntl.
68When an open() call has succeeded, the device will be ready for use in
69the specified mode. This implies that the corresponding hardware is
70powered up, and that other front-ends may have been powered down to make
71that possible.
72
73
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030074Return Value
Markus Heiser5377d912016-06-30 15:18:56 +020075============
76
Mauro Carvalho Chehab760c7012016-07-04 12:56:17 -030077On success :ref:`open() <frontend_f_open>` returns the new file descriptor.
78On error, -1 is returned, and the ``errno`` variable is set appropriately.
79
Markus Heiser5377d912016-06-30 15:18:56 +020080Possible error codes are:
81
82EACCES
83 The caller has no permission to access the device.
84
85EBUSY
86 The the device driver is already in use.
87
88ENXIO
89 No device corresponding to this device special file exists.
90
91ENOMEM
92 Not enough kernel memory was available to complete the request.
93
94EMFILE
95 The process already has the maximum number of files open.
96
97ENFILE
98 The limit on the total number of files open on the system has been
99 reached.
100
101ENODEV
102 The device got removed.