揭秘V4L2和视频捕获设备驱动
1. V4L2文件操作与ioctl处理
在V4L2的文件操作中,我们使用了标准的核心辅助函数,示例代码如下:
.unlocked_ioctl = video_ioctl2,
.poll = vb2_fop_poll,
.mmap = vb2_fop_mmap,
.read = vb2_fop_read,
1.1 V4L2 ioctl处理
v4l2_file_operations.unlocked_ioctl 回调应设置为 video_ioctl2 。 video_ioctl2 负责在内核和用户空间之间复制参数,并在将每个单独的 ioctl() 调用分派给驱动程序之前进行一些合理性检查(例如,检查 ioctl 命令是否有效)。最终,该调用会进入 video_device->ioctl_ops 字段中的回调条目,该字段的类型为 struct v4l2_ioctl_ops 。
struct v4l2_ioctl_ops 结构包含了V4L2框架中每个可能的 ioctl 的回调。不过,你应根据设备类型和驱动程序的功能来设置这些回调。该结构定义如下:
struct v4l2_ioctl_ops {
超级会员免费看
订阅专栏 解锁全文
31

被折叠的 条评论
为什么被折叠?



