Standard byteorder functions across BSD / Linux

Nanno Langstraat nlcom_os at ii.nl
Thu Jun 5 09:45:14 UTC 2008


Max Laier wrote:
> On Thursday 05 June 2008 00:33:19 Nanno Langstraat wrote:
>   
>>     * <endian.h> or <sys/endian.h> ?
>>       I maintain that it should be <endian.h> for user applications:
>>       IMHO <sys/> is for the user-kernel API, and byteorder belongs to
>>       libc not the kernel API.
>>       glibc apparently agrees, OpenBSD disagreed.
>>     
>
> Not sure about this.  There might be namespace issues with this approach, 
> though there probably shouldn't.

True. However, glibc (i.e. Linux) has had the file <endian.h> for a long
time.  (That's probably why Ulrich Drepper simply added the new macros
there)

Since they're something of an "800 pound gorilla", I don't think it'll
be an additional hazard for BSD to add that file to the top-level file
namespace.

In fact, glibc are taking an extra risk, because their pre-existing
<endian.h> is automatically pulled in by common things like <ctype.h>
and <pthread.h>.

On FreeBSD, a newly introduced <endian.h> can sit there innocently, and
only be pulled in by user applications that explicitly know about it.


> It's obviously not a problem to have 
> both, but getting rid of sys/endian.h now is too late for sure.
>   

Agree, won't disappear, even if only because the kernel uses it.

    Nanno



More information about the freebsd-hackers mailing list