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"

Reply via email to