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
变量。
|
调用者无权访问设备。 |
|
设备驱动程序正在使用中。 |
|
进程已打开最大文件数。 |
|
系统上打开的文件总数的限制已达到。 |
通用错误代码在通用错误代码一章中描述。