diff options
Diffstat (limited to 'usr/src/head/endian.h')
| -rw-r--r-- | usr/src/head/endian.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/usr/src/head/endian.h b/usr/src/head/endian.h new file mode 100644 index 0000000000..a5117bbacd --- /dev/null +++ b/usr/src/head/endian.h @@ -0,0 +1,70 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2016 Joyent, Inc. + */ + +#ifndef _ENDIAN_H +#define _ENDIAN_H + +/* + * Endian conversion routines, see endian(3C) + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <sys/isa_defs.h> +#include <inttypes.h> + +#define LITTLE_ENDIAN 1234 +#define BIG_ENDIAN 4321 +#define PDP_ENDIAN 3412 + +#ifdef _LITTLE_ENDIAN +#define BYTE_ORDER LITTLE_ENDIAN +#elif _BIG_ENDIAN +#define BYTE_ORDER BIG_ENDIAN +#else +#error "Unknown byte order" +#endif /* _LITTLE_ENDIAN */ + +extern uint16_t htobe16(uint16_t); +extern uint32_t htobe32(uint32_t); +extern uint64_t htobe64(uint64_t); + +extern uint16_t htole16(uint16_t); +extern uint32_t htole32(uint32_t); +extern uint64_t htole64(uint64_t); + +/* Supply both the old and new BSD names */ +extern uint16_t betoh16(uint16_t); +extern uint16_t letoh16(uint16_t); +extern uint16_t be16toh(uint16_t); +extern uint16_t le16toh(uint16_t); + +extern uint32_t betoh32(uint32_t); +extern uint32_t letoh32(uint32_t); +extern uint32_t be32toh(uint32_t); +extern uint32_t le32toh(uint32_t); + +extern uint64_t betoh64(uint64_t); +extern uint64_t letoh64(uint64_t); +extern uint64_t be64toh(uint64_t); +extern uint64_t le64toh(uint64_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDIAN_H */ |
