Message ID | Pine.LNX.4.58.0901210048500.13170@shell2.speakeasy.net (mailing list archive) |
---|---|
State | RFC |
Headers | show |
On Wed, Jan 21, 2009 at 2:24 PM, Trent Piepho <xyzzy@speakeasy.org> wrote: > On Wed, 21 Jan 2009, Jaswinder Singh Rajput wrote: >> On Wed, Jan 21, 2009 at 7:20 AM, Mauro Carvalho Chehab >> <mchehab@infradead.org> wrote: >> > On Wed, 21 Jan 2009 07:10:38 +0530 >> > Jaswinder Singh Rajput <jaswinder@kernel.org> wrote: >> > >> >> usr/include/linux/videodev.h is giving 2 warnings in 'make headers_check': >> >> usr/include/linux/videodev.h:19: leaks CONFIG_VIDEO to userspace where it is not valid >> >> usr/include/linux/videodev.h:314: leaks CONFIG_VIDEO to userspace where it is not valid >> >> >> >> Whole file is covered with #if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) >> >> >> >> It means this file is only valid for kernel mode if CONFIG_VIDEO_V4L1_COMPAT is defined but in user mode it is always valid. >> > >> > V4L1 is the old deprecated userspace API for video devices. It is still >> > required by some userspace applications. So, on userspace, it should be >> > included. Also, this allows that one userspace app to be compatible with both >> > V4L2 API (the current one) and the legacy V4L1 one. >> > >> > It should be noticed that are still a few drivers using the legacy API yet to >> > be converted. >> > >> >> If you have no objections then I will make a patchset which do followings: >> 1. Remove #if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined >> (__KERNEL__) from include/linux/videodev.h >> 2. cover all #include <linux/videodev.h> with #ifdef >> CONFIG_VIDEO_V4L1_COMPAT in kernel >> >> By this way, we can satisfy both kernel space and userspace issue and >> also get rid of above warnings. >> >> If you have better suggestion then let me know. > > That sounds like it will add a mess of #if's. How about this? > > diff -r 29c5787efcda linux/include/linux/videodev.h > --- a/linux/include/linux/videodev.h Thu Jan 15 09:07:03 2009 -0800 > +++ b/linux/include/linux/videodev.h Wed Jan 21 00:51:45 2009 -0800 > @@ -15,7 +15,8 @@ > #include <linux/ioctl.h> > #include <linux/videodev2.h> > > -#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) > +#if (defined(__KERNEL__) && defined(CONFIG_VIDEO_V4L1_COMPAT)) \ > + || !defined (__KERNEL__) > > #define VID_TYPE_CAPTURE 1 /* Can capture */ > #define VID_TYPE_TUNER 2 /* Can tune */ > > Now CONFIG_VIDEO_V4L1_COMPAT will only be used in the kernel. > No, this will still give warnings. Please run 'make headers_check' -- JSR -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 21 January 2009, Jaswinder Singh Rajput wrote: > > diff -r 29c5787efcda linux/include/linux/videodev.h > > --- a/linux/include/linux/videodev.h Thu Jan 15 09:07:03 2009 -0800 > > +++ b/linux/include/linux/videodev.h Wed Jan 21 00:51:45 2009 -0800 > > @@ -15,7 +15,8 @@ > > #include <linux/ioctl.h> > > #include <linux/videodev2.h> > > > > -#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) > > +#if (defined(__KERNEL__) && defined(CONFIG_VIDEO_V4L1_COMPAT)) \ > > + || !defined (__KERNEL__) > > > > #define VID_TYPE_CAPTURE 1 /* Can capture */ > > #define VID_TYPE_TUNER 2 /* Can tune */ > > > > Now CONFIG_VIDEO_V4L1_COMPAT will only be used in the kernel. > > > > No, this will still give warnings. You could #define another conditional, like this: #ifndef __KERNEL__ # define __V4L1_COMPAT_API /* Always provide definitions to user space */ #else /* __KERNEL__ */ # ifdef CONFIG_VIDEO_V4L1_COMPAT # define __V4L1_COMPAT_API # endif /* CONFIG_VIDEO_V4L1_COMPAT /* #endif /* __KERNEL__ */ Arnd <>< -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 21 Jan 2009, Arnd Bergmann wrote: > On Wednesday 21 January 2009, Jaswinder Singh Rajput wrote: > > > diff -r 29c5787efcda linux/include/linux/videodev.h > > > --- a/linux/include/linux/videodev.h Thu Jan 15 09:07:03 2009 -0800 > > > +++ b/linux/include/linux/videodev.h Wed Jan 21 00:51:45 2009 -0800 > > > @@ -15,7 +15,8 @@ > > > #include <linux/ioctl.h> > > > #include <linux/videodev2.h> > > > > > > -#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) > > > +#if (defined(__KERNEL__) && defined(CONFIG_VIDEO_V4L1_COMPAT)) \ > > > + || !defined (__KERNEL__) > > > > > > #define VID_TYPE_CAPTURE 1 /* Can capture */ > > > #define VID_TYPE_TUNER 2 /* Can tune */ > > > > > > Now CONFIG_VIDEO_V4L1_COMPAT will only be used in the kernel. > > > > > > > No, this will still give warnings. > > You could #define another conditional, like this: > > #ifndef __KERNEL__ > # define __V4L1_COMPAT_API /* Always provide definitions to user space */ > #else /* __KERNEL__ */ > # ifdef CONFIG_VIDEO_V4L1_COMPAT > # define __V4L1_COMPAT_API > # endif /* CONFIG_VIDEO_V4L1_COMPAT /* > #endif /* __KERNEL__ */ I see what the real problem is now, the unifdef program isn't smart enough to realize that it knows the result of !defined(__KERNEL__) || defined(FOO) and so it keeps those ifdefs in when it should be able to remove them. This works too: #ifndef __KERNEL__ # define __V4L1_COMPAT_API /* Always provide definitions to user space */ #elif defined(CONFIG_VIDEO_V4L1_COMPAT) /* __KERNEL__ */ # define __V4L1_COMPAT_API #endif /* CONFIG_VIDEO_V4L1_COMPAT */ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff -r 29c5787efcda linux/include/linux/videodev.h --- a/linux/include/linux/videodev.h Thu Jan 15 09:07:03 2009 -0800 +++ b/linux/include/linux/videodev.h Wed Jan 21 00:51:45 2009 -0800 @@ -15,7 +15,8 @@ #include <linux/ioctl.h> #include <linux/videodev2.h> -#if defined(CONFIG_VIDEO_V4L1_COMPAT) || !defined (__KERNEL__) +#if (defined(__KERNEL__) && defined(CONFIG_VIDEO_V4L1_COMPAT)) \ + || !defined (__KERNEL__) #define VID_TYPE_CAPTURE 1 /* Can capture */ #define VID_TYPE_TUNER 2 /* Can tune */