2.4.1. 数字电视前端 open()¶
2.4.1.1. 名称¶
fe-open - 打开一个前端设备
2.4.1.2. 概要¶
#include <fcntl.h>
-
int open(const char *device_name, int flags)¶
2.4.1.3. 参数¶
device_name
要打开的设备。
flags
打开标志。访问可以是
O_RDWR
或O_RDONLY
。允许使用
O_RDONLY
多次打开。在此模式下,仅允许查询和读取 ioctl。只允许一个以
O_RDWR
模式打开。在此模式下,允许所有 ioctl。当给定
O_NONBLOCK
标志时,当没有数据可用或设备驱动程序暂时繁忙时,系统调用可能会返回EAGAIN
错误代码。其他标志无效。
2.4.1.4. 描述¶
此系统调用打开一个命名的前端设备(/dev/dvb/adapter?/frontend?
)以供后续使用。通常,在成功打开后要做的第一件事是使用 ioctl FE_GET_INFO 找出前端类型。
该设备可以在只读模式下打开,该模式只允许监视设备状态和统计信息;也可以在读/写模式下打开,该模式允许任何类型的用途(例如,执行调谐操作)。
在具有多个前端的系统中,通常情况是多个设备不能同时以读/写模式打开。只要一个前端设备以读/写模式打开,其他 open()
在读/写模式下的调用将会失败或阻塞,具体取决于是否指定了非阻塞或阻塞模式。以阻塞模式打开的前端设备稍后可以使用 fcntl 系统调用的 F_SETFL 命令将其置于非阻塞模式(反之亦然)。这是一个标准的系统调用,记录在 fcntl 的 Linux 手册页中。当一个 open()
调用成功后,该设备将准备好以指定的模式使用。这意味着相应的硬件已通电,并且为了实现这一点,可能已经关闭了其他前端的电源。
2.4.1.5. 返回值¶
成功时,open()
返回新的文件描述符。如果出错,则返回 -1,并且会相应地设置 errno
变量。
可能的错误代码是
成功时返回 0,并且 ca_slot_info
被填充。
如果出错,则返回 -1,并且会相应地设置 errno
变量。
|
调用者没有权限访问该设备。 |
|
设备驱动程序正在使用中。 |
|
该进程已打开最大数量的文件。 |
|
系统上打开的文件总数已达到上限。 |
通用错误代码在 通用错误代码 章节中描述。