2011/11/17 John Baldwin <j...@freebsd.org>: > I recall the discussion from earlier. I can't recall if I had replied to it > though. :-/ In my current opinion, I think it would be fine to define > __FreeBSD_kernel__ on FreeBSD and to do it in <sys/param.h> for now until all > the compilers we use have been updated to define it automatically (which may > be a long time). I think it will also be fine to patch in-system headers to > use __FreeBSD_kernel__ once <sys/param.h> is defined. Unfortunately headers > in 3rd party software are going to have to check for both __FreeBSD__ and > __FreeBSD_kernel__ to support both GNU/kFreeBSD and older FreeBSD for the > foreseeable future. I think that is fine, but that the sooner we add > __FreeBSD_kernel__ on FreeBSD the sooner we get the clock started for a day > when those extra checks can go away. I would also be fine with MFC'ing the > addition of __FreeBSD_kernel__ to older branches (at least 7 - 9) as well.
Well, here's a patch then. I wrote a comment in it trying to explain the situation. Please let me know what you think.
Index: sys/sys/param.h =================================================================== --- sys/sys/param.h (revision 227580) +++ sys/sys/param.h (working copy) @@ -60,6 +60,23 @@ #undef __FreeBSD_version #define __FreeBSD_version 1000001 /* Master, propagated to newvers */ +/* + * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, + * which by definition is always true on FreeBSD :-). This macro may also + * be defined on other systems that use the kernel of FreeBSD, such as + * GNU/kFreeBSD. + * + * It is tempting to use this macro in userland code when we want to enable + * kernel-specific routines, and in fact it's fine to do this in code that + * is part of FreeBSD itself. However, be aware that as presence of this + * macro is still not widespread (e.g. older FreeBSD versions, 3rd party + * compilers, etc), it is STRONGLY DISCOURAGED to check for this macro in + * external applications without also checking for __FreeBSD__ as an + * alternative. + */ +#undef __FreeBSD_kernel__ +#define __FreeBSD_kernel__ __FreeBSD__ + #ifdef _KERNEL #define P_OSREL_SIGWAIT 700000 #define P_OSREL_SIGSEGV 700004
_______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"