# HG changeset patch # User AngelCarpintero # Date 1247047651 0 # Node ID 647e63ddab4652bf0ca341d364d07de51243958f # Parent 5971a90f24594383fc2219fcac7317eb20a1fac7 Apply patch with some fix from Peter Holik to allow compile and work with kernel 2.6.29 diff -r 5971a90f2459 -r 647e63ddab46 Makefile --- a/Makefile Tue Jan 20 12:23:52 2009 +0000 +++ b/Makefile Wed Jul 08 10:07:31 2009 +0000 @@ -48,7 +48,7 @@ -/sbin/depmod -a clean: rm -f .*.cmd *.o *.mod.c *.ko .v* *~ core Modules.symvers Module.symvers modules.order - rm -rf .tmp_versions/ + rm -rf .tmp_versions/ Module.markers rm -f example/dummy example/feed example/resize example/invert dist: clean diff -r 5971a90f2459 -r 647e63ddab46 vloopback.c --- a/vloopback.c Tue Jan 20 12:23:52 2009 +0000 +++ b/vloopback.c Wed Jul 08 10:07:31 2009 +0000 @@ -151,11 +151,15 @@ * in Makefile. * * 22.12.08 (Angel Carpintero) - * Allow build with kernel 2.6.28 and 2.6.27.git ( struct video_dev has not priv member anymore). + * Allow build with kernel 2.6.28 and 2.6.27.git ( struct video_dev has not priv member anymore). + * + * 17.05.09 (Peter Holik) + * Patch to allow work with kernel 2.6.29 + * */ -#define VLOOPBACK_VERSION "1.2-trunk" +#define VLOOPBACK_VERSION "1.3-trunk" /* Include files common to 2.4 and 2.6 versions */ #include /* >= 2.6.14 LINUX_VERSION_CODE */ @@ -164,6 +168,10 @@ #include #include +#ifndef CONFIG_VIDEO_V4L1_COMPAT +#error "need CONFIG_VIDEO_V4L1_COMPAT" +#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) #include #endif @@ -376,7 +384,11 @@ return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) static int vloopback_open(struct inode *inod, struct file *f) +#else +static int vloopback_open(struct file *f) +#endif { struct video_device *loopdev = video_devdata(f); priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; @@ -430,7 +442,11 @@ return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) static int vloopback_release(struct inode * inod, struct file *f) +#else +static int vloopback_release(struct file *f) +#endif { struct video_device *loopdev = video_devdata(f); priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; @@ -691,8 +707,12 @@ return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) static int vloopback_ioctl(struct inode *inod, struct file *f, unsigned int cmd, unsigned long arg) +#else +static long vloopback_ioctl(struct file *f, unsigned int cmd, unsigned long arg) +#endif { struct video_device *loopdev = video_devdata(f); priv_ptr ptr = (priv_ptr)loopdev->vd_private_data; @@ -1115,7 +1135,11 @@ return 0; } -static struct file_operations fileops_template = +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) +static const struct file_operations fileops_template = +#else +static const struct v4l2_file_operations fileops_template = +#endif { owner: THIS_MODULE, open: vloopback_open, @@ -1124,7 +1148,7 @@ write: vloopback_write, poll: vloopback_poll, ioctl: vloopback_ioctl, -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) compat_ioctl: v4l_compat_ioctl32, #endif mmap: vloopback_mmap, @@ -1157,7 +1181,6 @@ minor_in = 2 * nr + dev_offset; minor_out = 2 * nr + 1 + dev_offset; } - /* allocate space for this pipe */ loops[nr]= kmalloc(sizeof(struct vloopback_pipe), GFP_KERNEL);