首页 百科知识 相关结构体与函数

相关结构体与函数

时间:2024-10-12 百科知识 版权反馈
【摘要】:如果O_NONBLOCK标识被给定,当在输出队列中没有数据或者buffer可用时,read()函数和VIDIOC_DQBUF的ioctl()将会返回错误代码EAGAIN,否则这些函数将会阻塞直到有了可用数据。在第一次调用open()函数后,驱动将会被启动为默认值,驱动是不会存在于无定义状态下的。在成功的打开一个V4L2驱动后会返回一个新的文件描述符。不成功则返回-1,发生错误时errno变量可能被设为如下代码:关闭设备。I/O进程将会被终止,与其文件描述符相关联任何资源将会被释放。

5.4.2 相关结构体与函数

1)V4L2open()

■语法格式:

#include<fcntl.h>

int open(const char*device_name,int flags);

▷■函数参数:

▷device_name:准备被打开的设备名。

▷flags:打开的参数。访问模式一定为O_RDWR。需要注意的是,即使这样设置,输入设备依旧只是能读,输出设备依旧只是能写。如果O_NONBLOCK标识被给定,当在输出队列中没有数据或者buffer可用时,read()函数和VIDIOC_DQBUF的ioctl()将会返回错误代码EAGAIN,否则这些函数将会阻塞直到有了可用数据。其他的参数没有什么影响。

■函数描述

可以通过设备的名称来打开一个V4L2的驱动。这个函数没有什么负面的影响,所有的数据格式参数,当前输入/输出,控制值和其他属性都会保持不变。在第一次调用open()函数后,驱动将会被启动为默认值,驱动是不会存在于无定义状态下的。

■函数的返回值

在成功的打开一个V4L2驱动后会返回一个新的文件描述符。不成功则返回-1,发生错误时errno变量可能被设为如下代码:

EACCES:调用者无权访问这一设备。

▷EBUSY:设备正在使用,并且不支持多次打开。

▷ENXIO:没有所指定的设备文件存在。

▷ENOMEM:内存不足。

▷EMFILE:设备文件已经被打开到了最大次数。

▷ENFILE:已经达到了系统所设定的所能打开此设备文件的次数限制。

2)V4L2close()

■语法格式:

#include<unistd.h>

#int close(int fd);

■参数:

▷fd:open()函数返回的文件描述符。

■描述:

关闭设备。I/O进程将会被终止,与其文件描述符相关联任何资源将会被释放。但是,数据格式参数、当前输入/输出、控制的值或者其他属性将保持不变。

■返回值

关闭成功时返回0,失败时返回-1,在失败时会设置相应的errno,可能的错误代码如下:

▷EBADF:所给fd不是一个已经打开的文件描述符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈