From: Boaz Harrosh <bharrosh@panasas.com>
To: "Jörn Engel" <joern@logfs.org>
Cc: Sam Ravnborg <sam@ravnborg.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [Patch] Always include <linux/types.h>
Date: Wed, 05 Nov 2008 19:48:22 +0200 [thread overview]
Message-ID: <4911DC66.9090607@panasas.com> (raw)
In-Reply-To: <20081105163941.GB6561@logfs.org>
Jörn Engel wrote:
> Hardly any file in the kernel can be compiled without including
> <linux/types.h>, directly or indirectly. And I'd wager a beer that
> noone can find a non-trivial example. I couldn't.
>
> So instead of sprinkling even more #include <linux/types.h> everywhere -
> 140 headers in include/linux/ would need that to compile standalone -
> let us just pass it automatically.
>
> The existing 4000 odd includes for types.h, plus some 300 each for
> compiler.h and stddef.h, which get pulled through types.h, can get
> removed at leasure.
>
> diff --git a/Makefile b/Makefile
> index 6192922..8a3fb66 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -326,7 +326,8 @@ AFLAGS_KERNEL =
> # Needed to be compatible with the O= option
> LINUXINCLUDE := -Iinclude \
> $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> - -include include/linux/autoconf.h
> + -include include/linux/autoconf.h \
> + -include include/linux/types.h
>
> KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
>
> --
I think that if:
[A]
<header1.h>
/* no includes pure level A header */
</header1.h>
[B]
<header2.h>
#include "header1.h"
/* Level B header depends on level A */
</header2.h>
[C]
<header3.h>
#include "header2.h"
use some types of header1.h
/* Level C header depends on level B */
</header3.h>
[D]
<source.c>
#include "header3.h"
use types from A, B, C
</source.c>
Then that's fine any other file that includes any one of A, B, or C will have
no problem compiling and headers include order does not matter. Actually it is
nice, since the reader of header3.h knows that it is derived/dependent work of
header2.h.
Now what happens in the future when at B #include "header1.h" is removed.
At C header3.h stops compiling. So here I think it is the programmer's decision.
If he thinks that usage of A types used at C are do to B and if B's implementation
changes to use another set of types, then also C should change with it. Then leave
it as above. If the programmer decides that there is independent use of A types
in C unrelated to B, then he should also include A directly. If in doubt just don't
include it.
In any case I'm still not breaking the self-contained / order-independent headers
rule.
So please don't do that, Most of these places you found are the A-B-C case
Just my $0.017
Boaz
next prev parent reply other threads:[~2008-11-05 17:48 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <48876009.8010701@panasas.com>
2008-11-04 16:09 ` [PATCHSET 00/18] open-osd: OSD Initiator library for Linux Boaz Harrosh
2008-11-04 16:17 ` [PATCH 01/18] major.h: char-major number for OSD device driver Boaz Harrosh
2008-11-26 17:33 ` [osd-dev] " Boaz Harrosh
2008-11-26 18:07 ` Randy Dunlap
2008-11-04 16:42 ` [PATCH 02/18] scsi: OSD_TYPE Boaz Harrosh
2008-11-04 16:44 ` [PATCH 03/18] libosd: OSDv1 Headers Boaz Harrosh
2008-11-04 19:10 ` Andrew Morton
2008-11-04 19:42 ` Jörn Engel
2008-11-04 20:29 ` Jörn Engel
2008-11-05 13:00 ` Boaz Harrosh
2008-11-05 12:54 ` Boaz Harrosh
2008-11-05 13:09 ` James Bottomley
2008-11-05 13:29 ` Boaz Harrosh
2008-11-09 14:52 ` [PATCH 03/18 ver2] " Boaz Harrosh
2008-11-09 17:45 ` Jörn Engel
2008-11-10 8:47 ` Boaz Harrosh
2008-11-10 15:17 ` Jörn Engel
2008-11-10 17:29 ` Randy Dunlap
2008-11-12 13:10 ` Boaz Harrosh
2008-11-12 16:48 ` Randy Dunlap
2008-11-12 17:09 ` Boaz Harrosh
2008-11-12 17:15 ` Johannes Berg
2008-11-12 13:13 ` [PATCH 03/18 ver3] " Boaz Harrosh
2008-11-12 18:59 ` Randy Dunlap
2008-11-13 9:38 ` Boaz Harrosh
2008-11-13 12:25 ` [PATCH 03/18 ver4] " Boaz Harrosh
2008-11-13 18:16 ` Randy Dunlap
2008-11-13 15:41 ` [osd-dev] " Benny Halevy
2008-11-04 16:44 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Boaz Harrosh
2008-11-04 18:03 ` Sam Ravnborg
2008-11-05 13:12 ` Boaz Harrosh
2008-11-09 14:55 ` [osd-dev] " Boaz Harrosh
2008-11-10 5:37 ` Randy Dunlap
2008-11-10 9:00 ` Boaz Harrosh
2008-11-05 16:39 ` [Patch] Always include <linux/types.h> Jörn Engel
2008-11-05 17:23 ` Alexey Dobriyan
2008-11-05 19:16 ` Jörn Engel
2008-11-05 19:48 ` Andreas Schwab
2008-11-05 20:02 ` Jörn Engel
2008-11-05 20:32 ` Alexey Dobriyan
2008-11-07 8:02 ` Jörn Engel
2008-11-05 20:20 ` Alexey Dobriyan
2008-11-05 17:48 ` Boaz Harrosh [this message]
2008-11-04 19:16 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Andrew Morton
2008-11-05 13:44 ` Boaz Harrosh
2008-11-09 14:50 ` [PATCH 04/18 ver2] " Boaz Harrosh
2008-11-04 16:44 ` [PATCH 05/18] osd_uld: OSD scsi ULD Boaz Harrosh
2008-11-04 16:44 ` [PATCH 06/18] osd_uld: API for retrieving osd devices from Kernel Boaz Harrosh
2008-11-04 16:44 ` [PATCH 07/18] osd_test: User-mode application to run the OSD tests Boaz Harrosh
2008-11-04 16:44 ` [PATCH 08/18] osd_ktests: Add basic " Boaz Harrosh
2008-11-04 16:44 ` [PATCH 09/18] libosd: attributes Support Boaz Harrosh
2008-11-04 16:44 ` [PATCH 10/18] osd_ktests: Test Attribute lists Boaz Harrosh
2008-11-04 16:44 ` [PATCH 11/18] libosd: OSD Security processing stubs Boaz Harrosh
2008-11-04 16:44 ` [PATCH 12/18] libosd: Add Flush and List-objects support Boaz Harrosh
2008-11-04 16:44 ` [PATCH 13/18] libosd: Not implemented commands Boaz Harrosh
2008-11-04 16:44 ` [PATCH 14/18] libosd: OSD version 2 Support Boaz Harrosh
2008-11-04 16:44 ` [PATCH 15/18] libosd: OSDv2 auto detection Boaz Harrosh
2008-11-04 16:44 ` [PATCH 16/18] osd: Documentation for OSD library Boaz Harrosh
2008-11-04 16:44 ` [PATCH 17/18] osd: Kconfig file for in-tree builds Boaz Harrosh
2008-11-04 16:44 ` [PATCH 18/18] scsi: Add osd library to build system Boaz Harrosh
2008-11-04 19:19 ` [PATCHSET 00/18] open-osd: OSD Initiator library for Linux Andrew Morton
2008-11-05 13:56 ` Boaz Harrosh
2008-11-09 14:58 ` Boaz Harrosh
2008-11-09 23:26 ` Stephen Rothwell
2008-11-10 12:52 ` Boaz Harrosh
2008-11-10 13:04 ` Stephen Rothwell
2008-12-22 12:32 ` Boaz Harrosh
2008-12-22 12:37 ` [PATCH 01/18] major.h: char-major number for OSD device driver Boaz Harrosh
2008-12-22 12:39 ` [PATCH 02/18] scsi: OSD_TYPE Boaz Harrosh
2008-12-22 12:41 ` [PATCH 03/18] libosd: OSDv1 Headers Boaz Harrosh
2008-12-22 12:43 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Boaz Harrosh
2008-12-22 12:46 ` [PATCH 05/18] osd_uld: OSD scsi ULD Boaz Harrosh
2008-12-22 12:49 ` [PATCH 06/18] osd_uld: API for retrieving osd devices from Kernel Boaz Harrosh
2008-12-22 12:51 ` [PATCH 07/18] osd_ktests: Add basic OSD tests Boaz Harrosh
2008-12-22 12:55 ` [PATCH 08/18] libosd: attributes Support Boaz Harrosh
2008-12-22 12:57 ` [PATCH 09/18] osd_ktests: Test Attribute lists Boaz Harrosh
2008-12-22 13:00 ` [PATCH 10/18] libosd: OSD Security processing stubs Boaz Harrosh
2008-12-22 13:02 ` [PATCH 11/18] libosd: Add Flush and List-objects support Boaz Harrosh
2008-12-22 13:04 ` [PATCH 12/18] libosd: Not implemented commands Boaz Harrosh
2008-12-22 13:07 ` [PATCH 13/18] libosd: OSD version 2 Support Boaz Harrosh
2008-12-22 13:09 ` [PATCH 14/18] libosd: OSDv2 auto detection Boaz Harrosh
2008-12-22 13:13 ` [PATCH 15/18] libosd: SCSI/OSD Sense decoding support Boaz Harrosh
2008-12-22 13:16 ` [PATCH 16/18] osd: Documentation for OSD library Boaz Harrosh
2008-12-22 13:18 ` [PATCH 17/18] osd: Kconfig file for in-tree builds Boaz Harrosh
2008-12-22 13:20 ` [PATCH 18/18] scsi: Add osd library to build system Boaz Harrosh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4911DC66.9090607@panasas.com \
--to=bharrosh@panasas.com \
--cc=akpm@linux-foundation.org \
--cc=joern@logfs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox