summaryrefslogtreecommitdiff
path: root/usr/src/head/endian.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/head/endian.h')
-rw-r--r--usr/src/head/endian.h70
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 */