1*3b4b8bdaSRobert Mustacchi /* 2*3b4b8bdaSRobert Mustacchi * This file and its contents are supplied under the terms of the 3*3b4b8bdaSRobert Mustacchi * Common Development and Distribution License ("CDDL"), version 1.0. 4*3b4b8bdaSRobert Mustacchi * You may only use this file in accordance with the terms of version 5*3b4b8bdaSRobert Mustacchi * 1.0 of the CDDL. 6*3b4b8bdaSRobert Mustacchi * 7*3b4b8bdaSRobert Mustacchi * A full copy of the text of the CDDL should have accompanied this 8*3b4b8bdaSRobert Mustacchi * source. A copy of the CDDL is also available via the Internet at 9*3b4b8bdaSRobert Mustacchi * http://www.illumos.org/license/CDDL. 10*3b4b8bdaSRobert Mustacchi */ 11*3b4b8bdaSRobert Mustacchi 12*3b4b8bdaSRobert Mustacchi /* 13*3b4b8bdaSRobert Mustacchi * Copyright 2016 Joyent, Inc. 14*3b4b8bdaSRobert Mustacchi */ 15*3b4b8bdaSRobert Mustacchi 16*3b4b8bdaSRobert Mustacchi #ifndef _ENDIAN_H 17*3b4b8bdaSRobert Mustacchi #define _ENDIAN_H 18*3b4b8bdaSRobert Mustacchi 19*3b4b8bdaSRobert Mustacchi /* 20*3b4b8bdaSRobert Mustacchi * Endian conversion routines, see endian(3C) 21*3b4b8bdaSRobert Mustacchi */ 22*3b4b8bdaSRobert Mustacchi 23*3b4b8bdaSRobert Mustacchi #ifdef __cplusplus 24*3b4b8bdaSRobert Mustacchi extern "C" { 25*3b4b8bdaSRobert Mustacchi #endif 26*3b4b8bdaSRobert Mustacchi 27*3b4b8bdaSRobert Mustacchi #include <sys/isa_defs.h> 28*3b4b8bdaSRobert Mustacchi #include <inttypes.h> 29*3b4b8bdaSRobert Mustacchi 30*3b4b8bdaSRobert Mustacchi #define LITTLE_ENDIAN 1234 31*3b4b8bdaSRobert Mustacchi #define BIG_ENDIAN 4321 32*3b4b8bdaSRobert Mustacchi #define PDP_ENDIAN 3412 33*3b4b8bdaSRobert Mustacchi 34*3b4b8bdaSRobert Mustacchi #ifdef _LITTLE_ENDIAN 35*3b4b8bdaSRobert Mustacchi #define BYTE_ORDER LITTLE_ENDIAN 36*3b4b8bdaSRobert Mustacchi #elif _BIG_ENDIAN 37*3b4b8bdaSRobert Mustacchi #define BYTE_ORDER BIG_ENDIAN 38*3b4b8bdaSRobert Mustacchi #else 39*3b4b8bdaSRobert Mustacchi #error "Unknown byte order" 40*3b4b8bdaSRobert Mustacchi #endif /* _LITTLE_ENDIAN */ 41*3b4b8bdaSRobert Mustacchi 42*3b4b8bdaSRobert Mustacchi extern uint16_t htobe16(uint16_t); 43*3b4b8bdaSRobert Mustacchi extern uint32_t htobe32(uint32_t); 44*3b4b8bdaSRobert Mustacchi extern uint64_t htobe64(uint64_t); 45*3b4b8bdaSRobert Mustacchi 46*3b4b8bdaSRobert Mustacchi extern uint16_t htole16(uint16_t); 47*3b4b8bdaSRobert Mustacchi extern uint32_t htole32(uint32_t); 48*3b4b8bdaSRobert Mustacchi extern uint64_t htole64(uint64_t); 49*3b4b8bdaSRobert Mustacchi 50*3b4b8bdaSRobert Mustacchi /* Supply both the old and new BSD names */ 51*3b4b8bdaSRobert Mustacchi extern uint16_t betoh16(uint16_t); 52*3b4b8bdaSRobert Mustacchi extern uint16_t letoh16(uint16_t); 53*3b4b8bdaSRobert Mustacchi extern uint16_t be16toh(uint16_t); 54*3b4b8bdaSRobert Mustacchi extern uint16_t le16toh(uint16_t); 55*3b4b8bdaSRobert Mustacchi 56*3b4b8bdaSRobert Mustacchi extern uint32_t betoh32(uint32_t); 57*3b4b8bdaSRobert Mustacchi extern uint32_t letoh32(uint32_t); 58*3b4b8bdaSRobert Mustacchi extern uint32_t be32toh(uint32_t); 59*3b4b8bdaSRobert Mustacchi extern uint32_t le32toh(uint32_t); 60*3b4b8bdaSRobert Mustacchi 61*3b4b8bdaSRobert Mustacchi extern uint64_t betoh64(uint64_t); 62*3b4b8bdaSRobert Mustacchi extern uint64_t letoh64(uint64_t); 63*3b4b8bdaSRobert Mustacchi extern uint64_t be64toh(uint64_t); 64*3b4b8bdaSRobert Mustacchi extern uint64_t le64toh(uint64_t); 65*3b4b8bdaSRobert Mustacchi 66*3b4b8bdaSRobert Mustacchi #ifdef __cplusplus 67*3b4b8bdaSRobert Mustacchi } 68*3b4b8bdaSRobert Mustacchi #endif 69*3b4b8bdaSRobert Mustacchi 70*3b4b8bdaSRobert Mustacchi #endif /* _ENDIAN_H */ 71