[U-Boot] [PATCH] flash.h: pull in common.h for types

Scott Wood scottwood at freescale.com
Wed Nov 18 01:01:25 CET 2009


Wolfgang Denk wrote:
> Dear Scott Wood,
> 
> In message <4B031158.20501 at freescale.com> you wrote:
>>> My question: is there a definitive position  somewhere  (for  example
>>> for  the  Linux kernel; I'm sure we don't have one for U-Boot [yet]),
>>> whether system headers should be self-sufficient?
>> I'd say they should be self-sufficient, in that the inclusion of the 
>> header itself should not fail if I haven't included some arbitrary other 
>> header.  I don't see what the argument would be for not doing this.
> 
> Well, Theo de Raadt says for example "... people would be able to
> include less files; indeed, almost be careless about what they
> include. But this would not increase portability in any way. And
> 'make build' would probably, if it was taken the nth degree, take
> twice as long. Therefore there is no benefit for the crazy rule you
> suggest..." - see
> http://www.mail-archive.com/tech@openbsd.org/msg00425.html

Making the headers self-sufficient is not an excuse for the including C 
file to not include everything it uses -- it just makes the C file not 
have to care about other stuff in the header that it does not intend to 
use, or which is a header implementation detail.

>> Which man pages are you looking at?
> 
> Well, for example:
> 
> open(2):
> 	SYNOPSIS
> 	       #include <sys/types.h>
> 	       #include <sys/stat.h>
> 	       #include <fcntl.h>
> 
> mknod(2):
> 	SYNOPSIS
> 	       #include <sys/types.h>
> 	       #include <sys/stat.h>
> 	       #include <fcntl.h>
> 	       #include <unistd.h>
> 
> stat(2):
> 	SYNOPSIS
> 	       #include <sys/types.h>
> 	       #include <sys/stat.h>
> 	       #include <unistd.h>
> 
> Why do we need these lists of #includes? WHy doe - for example -
> <sys/stat.h> not auto-include anything it might need? 
> 
> To me this seems to be an indication that there is no intention to
> make headers self-sufficent, but I am absolutely not sure.

That is just listing the headers to include in order to have access to 
all of the facilities described.  However, any one of those headers 
should be able to be included by itself without the inclusion alone 
causing the build to fail.  A quick test under Linux/glibc shows this to 
be the case (i.e. no failures).

-Scott



More information about the U-Boot mailing list