开始学习v4l2中camera的架构
app调用v4l2框架,然后v4l2框架再调用具体的驱动
如:在app:open----->v4l2:open------->driver:open
v4l2提供的是一个通用的框架,然后驱动去实现具体的内容。
问题:那么v4l2是怎么调用driver的呢?
这个我们看看相关代码就很清楚了。
//drivers/media/video/v4l2-dev.c
static int v4l2_open(struct inode *inode, struct file *filp)
{
printk("<6>\nsong:**************v4l2_open************\n");
struct video_device *vdev;
int ret = 0;
/* Check if the video device is available */
mutex_lock(&videodev_lock);
//这里就是从我们的在驱动中注册的video_device->cdev得到video_device.
vdev = video_devdata(filp);
/* return ENODEV if the video device has been removed
already or if it is not regi