Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Nov 2011 08:24:07 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-arch@freebsd.org
Cc:        Kostik Belousov <kostikbel@gmail.com>, Robert Millan <rmh@debian.org>, freebsd-current@freebsd.org, Adrian Chadd <adrian@freebsd.org>
Subject:   Re: [PATCH] Detect GNU/kFreeBSD in user-visible kernel headers
Message-ID:  <201111220824.07823.jhb@freebsd.org>
In-Reply-To: <CAOfDtXNypUhu-dWznLyHcZMN-ZPSn_qTC6pSuL68r2M2hOjZTg@mail.gmail.com>
References:  <CAOfDtXPX1Rv9T7%2B1jYQbkM14tRY7mqgCzPcUqvHxFaRObbwvEg@mail.gmail.com> <20111121092749.GD50300@deviant.kiev.zoral.com.ua> <CAOfDtXNypUhu-dWznLyHcZMN-ZPSn_qTC6pSuL68r2M2hOjZTg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, November 21, 2011 12:39:26 pm Robert Millan wrote:
> (replying with Debian hat this time)
> 
> 2011/11/21 Kostik Belousov <kostikbel@gmail.com>:
> > There are some implementations that
> > use FreeBSD kernel, and which could potentially benefit from providing
> > its own value for __FreeBSD_kernel.
> 
> Actually, we wouldn't be able to provide a different value for the
> macro (whatever its name). Our compiler simply doesn't know which
> version of the kernel it is building for. Only the headers do, but if
> we define it in the headers we'd just use the FreeBSD definitions.
> 
> Our compiler defines __FreeBSD_kernel__ as an empty macro, I don't
> expect this will change because unlike with FreeBSD, on Debian there
> are strong technical limitations to making it a number.
> 
> If __FreeBSD_kernel__ is to be defined in FreeBSD land, may I suggest
> that it is defined as an empty macro as well? This covers the vast
> majority of cases (e.g. like the ones in my initial patch which
> started this discussion), and it doesn't preclude the possibility that
> this macro becomes a number without breaking backward compatibility.
> 
> OTOH once you define it as a number, it becomes relevant whether you
> did it with #ifndef or with #undef, and so you have to commit to it.
> 
> Just to make it clear: It's no problem to me if it's defined as a
> number, but it doesn't help much either. At least from Debian POV it's
> not worth making a big argument about. It could be a good idea from
> FreeBSD POV, but please only do this if it's useful to FreeBSD.

Is __FreeBSD_version defined if __FreeBSD_kernel__ is defined on kFreeBSD?
Most things that want to check versions that I've seen do something like
this:

#ifdef __FreeBSD__
#include <sys/param.h>

#if __FreeBSD_version > XXXXXXX
/* use new feature */
#endif
#endif

If __FreeBSD_version is defined when __FreeBSD_kernel__ is defined, then
I think having it be empty would be ok as it would allow usage as above.
Also, in that case I think __FreeBSD_kernel__ is much closer in meaning
to __FreeBSD__ than to __FreeBSD_version.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201111220824.07823.jhb>