示例#1
0
static int put_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up)
{
	if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_format32)) ||
		put_user(kp->type, &up->type))
		return -EFAULT;
	switch (kp->type) {
	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
		return put_v4l2_pix_format(&kp->fmt.pix, &up->fmt.pix);
	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
		return put_v4l2_window32(&kp->fmt.win, &up->fmt.win);
	case V4L2_BUF_TYPE_VBI_CAPTURE:
	case V4L2_BUF_TYPE_VBI_OUTPUT:
		return put_v4l2_vbi_format(&kp->fmt.vbi, &up->fmt.vbi);
	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
		return put_v4l2_sliced_vbi_format(&kp->fmt.sliced, &up->fmt.sliced);
	case V4L2_BUF_TYPE_PRIVATE:
		if (copy_to_user(up, kp, sizeof(up->fmt.raw_data)))
			return -EFAULT;
		return 0;
	case 0:
		return -EINVAL;
	default:
		printk(KERN_INFO "compat_ioctl32: unexpected VIDIOC_FMT type %d\n",
								kp->type);
		return -EINVAL;
	}
}
示例#2
0
static int put_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_framebuffer32 __user *up)
{
    u32 tmp = (u32)((unsigned long)kp->base);

    if(!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_framebuffer32)) ||
        put_user(tmp, &up->base) ||
        put_user(kp->capability, &up->capability) ||
        put_user(kp->flags, &up->flags))
            return -EFAULT;
    put_v4l2_pix_format(&kp->fmt, &up->fmt);
    return 0;
}
示例#3
0
static int put_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up)
{
    if(!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_format32)) ||
        put_user(kp->type, &up->type))
        return -EFAULT;
    switch (kp->type) {
    case V4L2_BUF_TYPE_VIDEO_CAPTURE:
        return put_v4l2_pix_format(&kp->fmt.pix, &up->fmt.pix);
    case V4L2_BUF_TYPE_VIDEO_OVERLAY:
        return put_v4l2_window32(&kp->fmt.win, &up->fmt.win);
    case V4L2_BUF_TYPE_VBI_CAPTURE:
        return put_v4l2_vbi_format(&kp->fmt.vbi, &up->fmt.vbi);
    default:
        return -ENXIO;
    }
}