NXP

3.6 mxc_v4l_ioctl函数分析

2019-07-12 13:48发布

下面分析mxc_v4l_ioctl函数: static long mxc_v4l_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { pr_debug("In MVC:mxc_v4l_ioctl "); return video_usercopy(file, cmd, arg, mxc_v4l_do_ioctl); } 它通过调用video_usercopy函数,最终就调用到这个mxc_v4l_do_ioctl函数,这个mxc_v4l_do_ioctl函数内部包含一个switch语句,根据传入不同的ioctl宏来选择执行不同的语句。下面就按不同的宏来分析。
我们根据一般摄像头应用程序的执行调用过程来顺序分析。 1.VIDIOC_QUERYCAP case VIDIOC_QUERYCAP: { struct v4l2_capability *cap = arg; pr_debug(" case VIDIOC_QUERYCAP "); strcpy(cap->driver, "mxc_v4l2"); cap->version = KERNEL_VERSION(0, 1, 11); cap-> = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; cap->card[0] = '