Subject: Re: Automatic inclusion of by
To: Todd Vierling <>
From: Matt Thomas <>
List: tech-kern
Date: 07/15/2001 20:23:57
At 10:46 PM 7/15/2001 -0400, Todd Vierling wrote:
>On Sun, 15 Jul 2001, Matt Thomas wrote:
>: I'd like to change sys/uvm/uvm_extern.h to not include <machine/*.h>
>Presuming you literally meant *, so as to make gcc do wildcard expansion,
>this is flatly wrong.  If you have particular headers in mind, it should be

Give me some credit here.

>: by default if _KERNEL is not defined.  This is because both arm and
>: powerpc have multiple pmap and vmparam headers which may be in use.  So
>: there's is no one particular header which is appropriate to include.
>If there's parameters that affect userland, then you need to have it include
>what *is* appropriate.  If the typical <machine/pmap.h> and
><machine/vmparam.h> aren't defining the rigbht things, fix them.  Use
>ifdefs, and if that is not right, rethink the problem.

I've already done that.  What's left are two 0 length files.  Sure I can
install them but if *nothing* in user space needs the definitions from them,
why bother including them at all?

>For instance, sparc has a different pagesize on sun4 and sun4u versus sun4c
>and sun4m.  The definition of NBPG on sparc, and its historically dependent
>PAGE_SIZE in <sys/shm.h>, were changed to use sysconf(3) to get the correct
>pagesize when in userspace.
>Why, dare I ask, is this suddenly broken?  You aren't doing something
>braindead like pointing /usr/include/machine to the $MACHINE_ARCH (as
>opposed to $MACHINE) directory, right?

Suddenly broken?  no.  Broken for a long time?  yes.  For instance,
many things in the kernel includes should not be exported to user-space if
there is a method of obtaining from the kernel (like RAW_PART).  The less
included, the less likely conflicts will arise.
Matt Thomas               Internet:
3am Software Foundry      WWW URL:
Cupertino, CA             Disclaimer: I avow all knowledge of this message