xref: /illumos-gate/usr/src/man/man3c/endian.3c (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
17dc9a163SRobert Mustacchi.\"
27dc9a163SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
37dc9a163SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
47dc9a163SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
57dc9a163SRobert Mustacchi.\" 1.0 of the CDDL.
67dc9a163SRobert Mustacchi.\"
77dc9a163SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
87dc9a163SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
97dc9a163SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
107dc9a163SRobert Mustacchi.\"
117dc9a163SRobert Mustacchi.\"
127dc9a163SRobert Mustacchi.\" Copyright 2016 Joyent, Inc.
137dc9a163SRobert Mustacchi.\"
14cc581a18SYuri Pankov.Dd August 2, 2018
157dc9a163SRobert Mustacchi.Dt ENDIAN 3C
167dc9a163SRobert Mustacchi.Os
177dc9a163SRobert Mustacchi.Sh NAME
187dc9a163SRobert Mustacchi.Nm endian ,
197dc9a163SRobert Mustacchi.Nm be16toh ,
207dc9a163SRobert Mustacchi.Nm be32toh ,
217dc9a163SRobert Mustacchi.Nm be64toh ,
227dc9a163SRobert Mustacchi.Nm betoh16 ,
237dc9a163SRobert Mustacchi.Nm betoh32 ,
247dc9a163SRobert Mustacchi.Nm betoh64 ,
257dc9a163SRobert Mustacchi.Nm htobe16 ,
267dc9a163SRobert Mustacchi.Nm htobe32 ,
277dc9a163SRobert Mustacchi.Nm htobe64 ,
287dc9a163SRobert Mustacchi.Nm htole16 ,
297dc9a163SRobert Mustacchi.Nm htole32 ,
307dc9a163SRobert Mustacchi.Nm htole64 ,
317dc9a163SRobert Mustacchi.Nm le16toh ,
327dc9a163SRobert Mustacchi.Nm le32toh ,
337dc9a163SRobert Mustacchi.Nm le64toh ,
347dc9a163SRobert Mustacchi.Nm letoh16 ,
357dc9a163SRobert Mustacchi.Nm letoh32 ,
367dc9a163SRobert Mustacchi.Nm letoh64
377dc9a163SRobert Mustacchi.Nd convert between big and little endian byte order
387dc9a163SRobert Mustacchi.Sh SYNOPSIS
397dc9a163SRobert Mustacchi.In endian.h
407dc9a163SRobert Mustacchi.Ft uint16_t
417dc9a163SRobert Mustacchi.Fo be16toh
427dc9a163SRobert Mustacchi.Fa "uint16_t be16"
437dc9a163SRobert Mustacchi.Fc
447dc9a163SRobert Mustacchi.Ft uint32_t
457dc9a163SRobert Mustacchi.Fo be32toh
467dc9a163SRobert Mustacchi.Fa "uint32_t be32"
477dc9a163SRobert Mustacchi.Fc
487dc9a163SRobert Mustacchi.Ft uint64_t
497dc9a163SRobert Mustacchi.Fo betoh64
507dc9a163SRobert Mustacchi.Fa "uint64_t be64"
517dc9a163SRobert Mustacchi.Fc
527dc9a163SRobert Mustacchi.Ft uint16_t
537dc9a163SRobert Mustacchi.Fo betoh16
547dc9a163SRobert Mustacchi.Fa "uint16_t be16"
557dc9a163SRobert Mustacchi.Fc
567dc9a163SRobert Mustacchi.Ft uint32_t
577dc9a163SRobert Mustacchi.Fo betoh32
587dc9a163SRobert Mustacchi.Fa "uint32_t be32"
597dc9a163SRobert Mustacchi.Fc
607dc9a163SRobert Mustacchi.Ft uint64_t
617dc9a163SRobert Mustacchi.Fo be64toh
627dc9a163SRobert Mustacchi.Fa "uint64_t be64"
637dc9a163SRobert Mustacchi.Fc
647dc9a163SRobert Mustacchi.Ft uint16_t
657dc9a163SRobert Mustacchi.Fo htobe16
667dc9a163SRobert Mustacchi.Fa "uint16_t host16"
677dc9a163SRobert Mustacchi.Fc
687dc9a163SRobert Mustacchi.Ft uint32_t
697dc9a163SRobert Mustacchi.Fo htobe32
707dc9a163SRobert Mustacchi.Fa "uint32_t host32"
717dc9a163SRobert Mustacchi.Fc
727dc9a163SRobert Mustacchi.Ft uint64_t
737dc9a163SRobert Mustacchi.Fo htobe64
747dc9a163SRobert Mustacchi.Fa "uint64_t host64"
757dc9a163SRobert Mustacchi.Fc
767dc9a163SRobert Mustacchi.Ft uint16_t
777dc9a163SRobert Mustacchi.Fo htole16
787dc9a163SRobert Mustacchi.Fa "uint16_t host16"
797dc9a163SRobert Mustacchi.Fc
807dc9a163SRobert Mustacchi.Ft uint32_t
817dc9a163SRobert Mustacchi.Fo htole32
827dc9a163SRobert Mustacchi.Fa "uint32_t host32"
837dc9a163SRobert Mustacchi.Fc
847dc9a163SRobert Mustacchi.Ft uint64_t
857dc9a163SRobert Mustacchi.Fo htole64
867dc9a163SRobert Mustacchi.Fa "uint64_t host64"
877dc9a163SRobert Mustacchi.Fc
887dc9a163SRobert Mustacchi.Ft uint16_t
897dc9a163SRobert Mustacchi.Fo le16toh
907dc9a163SRobert Mustacchi.Fa "uint16_t le16"
917dc9a163SRobert Mustacchi.Fc
927dc9a163SRobert Mustacchi.Ft uint32_t
937dc9a163SRobert Mustacchi.Fo le32toh
947dc9a163SRobert Mustacchi.Fa "uint32_t le32"
957dc9a163SRobert Mustacchi.Fc
967dc9a163SRobert Mustacchi.Ft uint64_t
977dc9a163SRobert Mustacchi.Fo le64toh
987dc9a163SRobert Mustacchi.Fa "uint64_t le64"
997dc9a163SRobert Mustacchi.Fc
1007dc9a163SRobert Mustacchi.Ft uint16_t
1017dc9a163SRobert Mustacchi.Fo letoh16
1027dc9a163SRobert Mustacchi.Fa "uint16_t le16"
1037dc9a163SRobert Mustacchi.Fc
1047dc9a163SRobert Mustacchi.Ft uint32_t
1057dc9a163SRobert Mustacchi.Fo letoh32
1067dc9a163SRobert Mustacchi.Fa "uint32_t le32"
1077dc9a163SRobert Mustacchi.Fc
1087dc9a163SRobert Mustacchi.Ft uint64_t
1097dc9a163SRobert Mustacchi.Fo letoh64
1107dc9a163SRobert Mustacchi.Fa "uint64_t le64"
1117dc9a163SRobert Mustacchi.Fc
1127dc9a163SRobert Mustacchi.Sh DESCRIPTION
1137dc9a163SRobert MustacchiThe
1147dc9a163SRobert Mustacchi.Nm
1157dc9a163SRobert Mustacchifamily of functions convert 16, 32, and 64-bit values between the host's
11672d3dbb9SYuri Pankovnative byte order and big- or little-endian.
11772d3dbb9SYuri PankovAll of the functions in this family simply return their input when the host's
11872d3dbb9SYuri Pankovnative byte order is the same as the desired order.
11972d3dbb9SYuri PankovFor more information on endianness, see
120*bbf21555SRichard Lowe.Xr byteorder 7 .
1217dc9a163SRobert Mustacchi.Pp
1227dc9a163SRobert MustacchiThe
1237dc9a163SRobert Mustacchi.Fn betoh16 ,
1247dc9a163SRobert Mustacchi.Fn betoh32 ,
1257dc9a163SRobert Mustacchiand
1267dc9a163SRobert Mustacchi.Fn betoh64
1277dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
1287dc9a163SRobert Mustacchibig-endian to the host's native endianness, swapping bytes as required.
1297dc9a163SRobert Mustacchi.Pp
1307dc9a163SRobert MustacchiThe
1317dc9a163SRobert Mustacchi.Fn letoh16 ,
1327dc9a163SRobert Mustacchi.Fn letoh32 ,
1337dc9a163SRobert Mustacchiand
1347dc9a163SRobert Mustacchi.Fn letoh64
1357dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
1367dc9a163SRobert Mustacchilittle-endian to the host's native endianness, swapping bytes as
1377dc9a163SRobert Mustacchirequired.
1387dc9a163SRobert Mustacchi.Pp
1397dc9a163SRobert MustacchiThe
1407dc9a163SRobert Mustacchi.Fn htobe16 ,
1417dc9a163SRobert Mustacchi.Fn htobe32 ,
1427dc9a163SRobert Mustacchiand
1437dc9a163SRobert Mustacchi.Fn htobe64
1447dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
1457dc9a163SRobert Mustacchithe host's native endianness to big-endian, swapping bytes as required.
1467dc9a163SRobert Mustacchi.Pp
1477dc9a163SRobert MustacchiThe
1487dc9a163SRobert Mustacchi.Fn htole16 ,
1497dc9a163SRobert Mustacchi.Fn htole32 ,
1507dc9a163SRobert Mustacchiand
1517dc9a163SRobert Mustacchi.Fn htole64
1527dc9a163SRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
1537dc9a163SRobert Mustacchithe host's native endianness to little-endian, swapping bytes as
1547dc9a163SRobert Mustacchirequired.
1557dc9a163SRobert Mustacchi.Pp
1567dc9a163SRobert MustacchiThe functions
1577dc9a163SRobert Mustacchi.Fn be16toh ,
1587dc9a163SRobert Mustacchi.Fn be32toh ,
1597dc9a163SRobert Mustacchi.Fn be64toh ,
1607dc9a163SRobert Mustacchi.Fn le16toh ,
1617dc9a163SRobert Mustacchi.Fn le32toh ,
1627dc9a163SRobert Mustacchiand
1637dc9a163SRobert Mustacchi.Fn le64toh ,
1647dc9a163SRobert Mustacchiare the same as
1657dc9a163SRobert Mustacchi.Fn betoh16 ,
1667dc9a163SRobert Mustacchi.Fn betoh32 ,
1677dc9a163SRobert Mustacchi.Fn betoh64 ,
1687dc9a163SRobert Mustacchi.Fn letoh16 ,
1697dc9a163SRobert Mustacchi.Fn letoh32 ,
1707dc9a163SRobert Mustacchiand
1717dc9a163SRobert Mustacchi.Fn letoh64
17272d3dbb9SYuri Pankovrespectively.
17372d3dbb9SYuri PankovHistorically, different platforms have diverged on the naming of these
17472d3dbb9SYuri Pankovfunctions.
17572d3dbb9SYuri PankovTo better support extant software, both are provided.
1767dc9a163SRobert Mustacchi.Pp
1777dc9a163SRobert MustacchiWhile these functions are common across multiple platforms, they have
17872d3dbb9SYuri Pankovnot been standardized.
17972d3dbb9SYuri PankovPortable applications should instead use the functions defined in
180cc581a18SYuri Pankov.Xr byteorder 3C .
1817dc9a163SRobert Mustacchi.Sh RETURN VALUES
1827dc9a163SRobert MustacchiThe functions always succeed and return a value that has been properly
1837dc9a163SRobert Mustacchiconverted.
1847dc9a163SRobert Mustacchi.Sh INTERFACE STABILITY
1857dc9a163SRobert Mustacchi.Sy Committed
1867dc9a163SRobert Mustacchi.Sh MT-LEVEL
1877dc9a163SRobert Mustacchi.Sy MT-Safe
1887dc9a163SRobert Mustacchi.Sh SEE ALSO
189cc581a18SYuri Pankov.Xr byteorder 3C ,
1907dc9a163SRobert Mustacchi.Xr endian.h 3HEAD ,
191*bbf21555SRichard Lowe.Xr attributes 7 ,
192*bbf21555SRichard Lowe.Xr byteorder 7
193