Abraham vd Merwe wrote:
> Hi!
> 
> I'm using the videodevX driver (20011221 snapshot). Somehow when I do an
> mmap() from my user application it never calls the mmap() function in the
> V4L2 driver. (I put printk's all over the mmap function in the videodevX
> module and in my driver's mmap function - neither of them gets called at
> all). Any ideas why this is happening?
> 
> My user app basically does the following:
> 
> open(/dev/v4l2/capture0)
> ioctl(VIDIOC_QUERYCAP)
> ioctl(VIDIOC_G_FMT)
> ioctl(VIDIOC_REQBUFS)
> ioctl(VIDIOC_G_PARM)
> ioctl(VIDIOC_S_PARM)
> ioctl(VIDIOC_QUERYBUF)
> mmap(offset + length I got from QUERYBUF)
> 
> All the ioctl's work as expected and calls through to my driver. It is just
> mmap() that fails with EPERM without even calling into the v4l2 module:
> 
> ------------< snip <------< snip <------< snip <------------
> root@frodo:/# ./stream 30
> area-sensor.c: line 280: as_open()
>      capture device: /dev/v4l2/capture0
> area-sensor.c: line 434: as_ioctl()
> frame buffer device: /dev/fb/0
>        capture rate: 30 frames per second
> area-sensor.c: line 434: as_ioctl()
> area-sensor.c: line 434: as_ioctl()
> area-sensor.c: line 434: as_ioctl()
> area-sensor.c: line 434: as_ioctl()
> area-sensor.c: line 434: as_ioctl()
> area-sensor.c: line 345: as_close()
> area-sensor: freeing irq 1
> unable to map frame buffer memory at 0x18000000 (length 262144 bytes) to a virtual
> address! (Permission denied)
> root@frodo:/#
> ------------< snip <------< snip <------< snip <------------
> 

Make sure you open the capture device O_RDWR, and mmap with the 
following flags: MAP_SHARED, and protection: PROT_READ|PROT_WRITE.

This should solve the EPERM problems.

-justin



_______________________________________________
Video4linux-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/video4linux-list

Reply via email to