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