warn about use of uninstalled kernel headers
authorArnd Bergmann <arnd@arndb.de>
Mon, 21 Sep 2009 14:37:12 +0000 (16:37 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Sun, 11 Oct 2009 21:21:25 +0000 (23:21 +0200)
User applications frequently hit problems when they try to use
the kernel headers directly, rather than the exported headers.

This adds an explicit warning for this case, and points to
a URL holding an explanation of why this is wrong and what
to do about it.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
include/linux/kernel.h
scripts/headers_install.pl

index d3cd23f3003962de7d50219b1967a87e37f9d364..f4e3184fa0540724d7777d0f140fc189cd806941 100644 (file)
@@ -659,6 +659,12 @@ extern int do_sysinfo(struct sysinfo *info);
 
 #endif /* __KERNEL__ */
 
+#ifndef __EXPORTED_HEADERS__
+#ifndef __KERNEL__
+#warning Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders
+#endif /* __KERNEL__ */
+#endif /* __EXPORTED_HEADERS__ */
+
 #define SI_LOAD_SHIFT  16
 struct sysinfo {
        long uptime;                    /* Seconds since boot */
index c6ae4052ab43bb5b8a884c23923d59ebf49de8ec..b89ca2c58fdbbe3592f97a27592675417713653c 100644 (file)
@@ -20,7 +20,7 @@ use strict;
 
 my ($readdir, $installdir, $arch, @files) = @ARGV;
 
-my $unifdef = "scripts/unifdef -U__KERNEL__";
+my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
 
 foreach my $file (@files) {
        local *INFILE;