(*) A complete scheme for doing it right removes all the _BSD_FOO_T_
drivel and ifdefs scattered in userland headers in favor of:
- a single header file that defines all the needed types prefixed
with __, which can be included anywhere;
- in userland, include-guarded header files akin to sys/null.h
that define single or common groups of the names without the
__ prefixes, e.g. <types/size_t.h>;
- including these header files in the proper places, such as in
standard userland header files like stddef.h;
- in the kernel, a single header file that defines all the types
without the __, that is or is exposed to sys/types.h but does
not affect userland.