Hi Ezequiel 2012/2/25 Ezequiel García <elezegarcia@xxxxxxxxx>: > Hi, > > If I register a video device with this fops: > > static const struct v4l2_file_operations v4l2_fops = { > .owner = THIS_MODULE, > .open = xxx_open, > .unlocked_ioctl = xxx_unlocked_ioctl, > .poll = xxx_poll, > .mmap = xxx_mmap, > }; > > then if I "cat" the device > > $ cat /dev/video0 > > Who is supporting read() ? > > I thought it could be v4l2_read(), > however this function seems to return EINVAL: > > static ssize_t v4l2_read(struct file *filp, char __user *buf, > size_t sz, loff_t *off) > { > struct video_device *vdev = video_devdata(filp); > int ret = -ENODEV; > > if (!vdev->fops->read) > return -EINVAL; > if (vdev->lock && mutex_lock_interruptible(vdev->lock)) > return -ERESTARTSYS; > if (video_is_registered(vdev)) > ret = vdev->fops->read(filp, buf, sz, off); > if (vdev->lock) > mutex_unlock(vdev->lock); > return ret; > } I'm not all that familiar with v4l, but based on what you've posted, you need to populate the read routine in your v4l2_fops structure to support read. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel