HomeFreeBSD

linux: For better compatibility, provide compatible endian.h

Description

linux: For better compatibility, provide compatible endian.h

Add endian.h. This includes sys/endian.h and then adds extra defines
that glibc defines with double underscores for our
_{BIG,BYTE,LITTLE,PDP}_ENDIAN macros. We also define __FLOAT_WORD_ORDER
to be the same as _BYTE_ENDIAN since FreeBSD doesn't currently define
this, and the default with glibc is exactly this for our platforms.
Move common parts of endian.h and sys/endian.h into sys/_endian.h
to limit namespace pollution from endian.h

All this gives us good compatibility with Linux. There may be one or two
upstreams that haven't integrated the patches I tried to send up.

There are some minor differences:
o The extra glibc macros are not defined. These are all

	  controlled with either __ at the start, or only defined
	  when glibc is being built. We also don't define macros
	  that are used internally in glibc that would pollute
	  the namespace.

o For complete compatibility, this change must also be

	  paired with providing a glibc-compatible byteswap.h.

Sponsored by: Netflix
Reviewed by: mhorne, markj, jhb
Differential Revision: https://reviews.freebsd.org/D31962

(cherry picked from commit 30e0d2a51026830e5141ce3dd43854819bba910c)

Details

Provenance
impAuthored on Jan 20 2023, 11:32 PM
Reviewer
mhorne
Differential Revision
D31962: linux: For better compatibility, provide compatible endian.h
Parents
rG6f3e6234f8be: endian.h: Use the __bswap* versions
Branches
Unknown
Tags
Unknown