Hi Ezequiel 2012/2/25 Ezequiel García <elezegarcia@gmail.com>:
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