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不是一个已经打开的文件描述符。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。