diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2008-12-30 11:34:58 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2009-01-02 20:43:26 +0100 |
commit | 483b41218fa9d5172312a9e294aaf78e22b266e6 (patch) | |
tree | 03c10a53e3b9a35b9bab8e4d81b35e0a086a873a /scripts/headers_check.pl | |
parent | 521b0c774d1350aac18f5cd35831469a4e879d72 (diff) | |
download | lwn-483b41218fa9d5172312a9e294aaf78e22b266e6.tar.gz lwn-483b41218fa9d5172312a9e294aaf78e22b266e6.zip |
kbuild: add checks for include of linux/types in userspace headers
If we see __[us](8|16|32|64) then we must include <linux/types.h>
If wee see include of <asm/types.h> then we recommend <linux/types.h>
Original script from Mike but modified by me.
Cc: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/headers_check.pl')
-rw-r--r-- | scripts/headers_check.pl | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl index 72924a7fcf1e..b62c319611a2 100644 --- a/scripts/headers_check.pl +++ b/scripts/headers_check.pl @@ -34,9 +34,11 @@ foreach my $file (@files) { $lineno = 0; while ($line = <FH>) { $lineno++; - check_include(); - check_prototypes(); - check_config(); + &check_include(); + &check_asm_types(); + &check_sizetypes(); + &check_prototypes(); + &check_config(); } close FH; } @@ -73,3 +75,42 @@ sub check_config } } +my $linux_asm_types; +sub check_asm_types() +{ + if ($lineno == 1) { + $linux_asm_types = 0; + } elsif ($linux_asm_types >= 1) { + return; + } + if ($line =~ m/^\s*#\s*include\s+<asm\/types.h>/) { + $linux_asm_types = 1; + printf STDERR "$filename:$lineno: " . + "include of <linux/types.h> is preferred over <asm/types.h>\n" + # Warn until headers are all fixed + #$ret = 1; + } +} + +my $linux_types; +sub check_sizetypes +{ + if ($lineno == 1) { + $linux_types = 0; + } elsif ($linux_types >= 1) { + return; + } + if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) { + $linux_types = 1; + return; + } + if ($line =~ m/__[us](8|16|32|64)\b/) { + printf STDERR "$filename:$lineno: " . + "found __[us]{8,16,32,64} type " . + "without #include <linux/types.h>\n"; + $linux_types = 2; + # Warn until headers are all fixed + #$ret = 1; + } +} + |