lkml.org 
[lkml]   [2008]   [Dec]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] kbuild: warn about headers using __[us]{8,16,32,64} types w/out linux/types.h
On Mon, Dec 29, 2008 at 03:27:51PM -0500, Mike Frysinger wrote:
> >
> > We do not need to warn for each line in a file. Only once is enough.
>
> i wasnt sure about that ... got pretty noisy the way i posted it :)
>
> > Also I assume that include <asm/types.h> is also ok.
>
> i dont think so ... does it really make sense for headers to be hitting
> asm/types.h anyways ? shouldnt they all be going through linux/types.h ?
> checkpatch would certainly warn about it ...

I added following patch which I have pushed out.

Sam

From 1f71c478dadbe1425eeaa704e50c7030ab011c5b Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <sam@ravnborg.org>
Date: Tue, 30 Dec 2008 11:34:58 +0100
Subject: [PATCH] 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>
---
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 72924a7..b62c319 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;
+ }
+}
+
--
1.6.0.2.GIT


\
 
 \ /
  Last update: 2008-12-30 11:43    [W:0.059 / U:0.196 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site