Support for GNU/kFreeBSD

GNU/kFreeBSD is an experimental OS provided by the Debian project, consisting of a FreeBSD kernel and GNU userland/libc. For a small number of cases, this offers advantages over a more common GNU/Linux combination, such as fast in-kernel support for ZFS storage.

This patch changes various ifdefs, either using __FreeBSD_kernel__ where a trait from the kernel is what matters, or __GLIBC__ where a trait from the C library matters.

This patch set has been carried downstream, in one form or another, since 1.2.3.1-1.

https://bugzilla.novell.com/show_bug.cgi?id=321634