--- vloopback.c Version 1.3, trunk revision 19 +++ vloopback.c Patched to compile with kernel 2.6.32 @@ -175,6 +175,7 @@ #include #include #include +#include #ifndef CONFIG_VIDEO_V4L1_COMPAT #error "need CONFIG_VIDEO_V4L1_COMPAT" @@ -406,8 +407,8 @@ #endif { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; if (debug > LOG_NODEBUG) @@ -466,8 +467,8 @@ #endif { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; if (debug > LOG_NODEBUG) @@ -520,8 +521,8 @@ size_t count, loff_t *offset) { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; unsigned long realcount = count; @@ -572,8 +573,8 @@ loff_t *offset) { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; unsigned long realcount = count; @@ -655,8 +656,8 @@ static int vloopback_mmap(struct file *f, struct vm_area_struct *vma) { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; unsigned long start = (unsigned long)vma->vm_start; long size = vma->vm_end - vma->vm_start; @@ -732,8 +733,8 @@ #endif { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; int i; @@ -1129,8 +1130,8 @@ static unsigned int vloopback_poll(struct file *f, struct poll_table_struct *wait) { struct video_device *loopdev = video_devdata(f); - priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; - //priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); + //priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; + priv_ptr ptr = (priv_ptr)video_get_drvdata(loopdev); int nr = ptr->pipenr; if (debug > LOG_NODEBUG) @@ -1210,10 +1211,10 @@ return -ENOMEM; *loops[nr]->vloopin = vloopback_template; - loops[nr]->vloopin->vd_private_data = kmalloc(sizeof(struct vloopback_private), - GFP_KERNEL); + video_set_drvdata(loops[nr]->vloopin, kmalloc(sizeof(struct vloopback_private), + GFP_KERNEL)); - if (loops[nr]->vloopin->vd_private_data == NULL) { + if (video_get_drvdata(loops[nr]->vloopin) == NULL) { kfree(loops[nr]->vloopin); return -ENOMEM; } @@ -1221,23 +1222,23 @@ loops[nr]->vloopout = video_device_alloc(); if (loops[nr]->vloopout == NULL) { - kfree(loops[nr]->vloopin->vd_private_data); + kfree(video_get_drvdata(loops[nr]->vloopin)); kfree(loops[nr]->vloopin); return -ENOMEM; } *loops[nr]->vloopout = vloopback_template; - loops[nr]->vloopout->vd_private_data = kmalloc(sizeof(struct vloopback_private), - GFP_KERNEL); + video_set_drvdata(loops[nr]->vloopout, kmalloc(sizeof(struct vloopback_private), + GFP_KERNEL)); - if (loops[nr]->vloopout->vd_private_data == NULL) { - kfree(loops[nr]->vloopin->vd_private_data); + if (video_get_drvdata(loops[nr]->vloopout) == NULL) { + kfree(video_get_drvdata(loops[nr]->vloopin)); kfree(loops[nr]->vloopin); kfree(loops[nr]->vloopout); return -ENOMEM; } - ((priv_ptr)loops[nr]->vloopin->vd_private_data)->pipenr = nr; - ((priv_ptr)loops[nr]->vloopout->vd_private_data)->pipenr = nr; + ((priv_ptr)video_get_drvdata(loops[nr]->vloopin))->pipenr = nr; + ((priv_ptr)video_get_drvdata(loops[nr]->vloopout))->pipenr = nr; loops[nr]->invalid_ioctl = 0; /* tibit */ loops[nr]->buffer = NULL; loops[nr]->width = 0; @@ -1250,8 +1251,8 @@ loops[nr]->ropen = 0; loops[nr]->frame = 0; - ((priv_ptr)loops[nr]->vloopin->vd_private_data)->in = 1; - ((priv_ptr)loops[nr]->vloopout->vd_private_data)->in = 0; + ((priv_ptr)video_get_drvdata(loops[nr]->vloopin))->in = 1; + ((priv_ptr)video_get_drvdata(loops[nr]->vloopout))->in = 0; sprintf(loops[nr]->vloopin->name, "Video loopback %d input", nr); sprintf(loops[nr]->vloopout->name, "Video loopback %d output", nr); @@ -1269,9 +1270,9 @@ if ((ret == -1 ) || ( ret == -23 )) { info("error registering device %s", loops[nr]->vloopin->name); - kfree(loops[nr]->vloopin->vd_private_data); + kfree(video_get_drvdata(loops[nr]->vloopin)); kfree(loops[nr]->vloopin); - kfree(loops[nr]->vloopout->vd_private_data); + kfree(video_get_drvdata(loops[nr]->vloopout)); kfree(loops[nr]->vloopout); kfree(loops[nr]); loops[nr] = NULL; @@ -1282,9 +1283,9 @@ if ((ret ==-1) || (ret == -23)) { info("error registering device %s", loops[nr]->vloopout->name); - kfree(loops[nr]->vloopin->vd_private_data); + kfree(video_get_drvdata(loops[nr]->vloopin)); video_unregister_device(loops[nr]->vloopin); - kfree(loops[nr]->vloopout->vd_private_data); + kfree(video_get_drvdata(loops[nr]->vloopout)); kfree(loops[nr]->vloopout); kfree(loops[nr]); loops[nr] = NULL; @@ -1395,9 +1396,9 @@ for (i = 0; i < nr_o_pipes; i++) { if (loops[i]) { - kfree(loops[i]->vloopin->vd_private_data); + kfree(video_get_drvdata(loops[i]->vloopin)); video_unregister_device(loops[i]->vloopin); - kfree(loops[i]->vloopout->vd_private_data); + kfree(video_get_drvdata(loops[i]->vloopout)); video_unregister_device(loops[i]->vloopout); if (loops[i]->buffer)