Message ID | 200909211637.12983.arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tuesday 22 September 2009, Sam Ravnborg wrote: > > +#ifndef __EXPORTED_HEADERS__ > But why do we need this "__EXPORTED_HEADERS__" thing? > > ? The problem is that the warning should only be for headers that are not installed yet, but it needs to be stripped in the installed version. Since we're already postprocessing all files with unifdef, that seemed like the easiest way to strip out the #warning. Obviously, I couldn't use the #ifdef __KERNEL__ logic, because that would either warn give false positives when building kernel code or when building user code from installed headers. Arnd <>< -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index d6320a3..f392d72 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -656,6 +656,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 */ diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl index c6ae405..b89ca2c 100644 --- a/scripts/headers_install.pl +++ b/scripts/headers_install.pl @@ -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;