xref: /illumos-gate/usr/src/man/man3c/endian.3c (revision 132157d7fb25c120ae1deca2a65fa7c78e8fcfd0)
1.\"
2.\" This file and its contents are supplied under the terms of the
3.\" Common Development and Distribution License ("CDDL"), version 1.0.
4.\" You may only use this file in accordance with the terms of version
5.\" 1.0 of the CDDL.
6.\"
7.\" A full copy of the text of the CDDL should have accompanied this
8.\" source.  A copy of the CDDL is also available via the Internet at
9.\" http://www.illumos.org/license/CDDL.
10.\"
11.\"
12.\" Copyright 2016 Joyent, Inc.
13.\"
14.Dd January 30, 2016
15.Dt ENDIAN 3C
16.Os
17.Sh NAME
18.Nm endian ,
19.Nm be16toh ,
20.Nm be32toh ,
21.Nm be64toh ,
22.Nm betoh16 ,
23.Nm betoh32 ,
24.Nm betoh64 ,
25.Nm htobe16 ,
26.Nm htobe32 ,
27.Nm htobe64 ,
28.Nm htole16 ,
29.Nm htole32 ,
30.Nm htole64 ,
31.Nm le16toh ,
32.Nm le32toh ,
33.Nm le64toh ,
34.Nm letoh16 ,
35.Nm letoh32 ,
36.Nm letoh64
37.Nd convert between big and little endian byte order
38.Sh SYNOPSIS
39.In endian.h
40.Ft uint16_t
41.Fo be16toh
42.Fa "uint16_t be16"
43.Fc
44.Ft uint32_t
45.Fo be32toh
46.Fa "uint32_t be32"
47.Fc
48.Ft uint64_t
49.Fo betoh64
50.Fa "uint64_t be64"
51.Fc
52.Ft uint16_t
53.Fo betoh16
54.Fa "uint16_t be16"
55.Fc
56.Ft uint32_t
57.Fo betoh32
58.Fa "uint32_t be32"
59.Fc
60.Ft uint64_t
61.Fo be64toh
62.Fa "uint64_t be64"
63.Fc
64.Ft uint16_t
65.Fo htobe16
66.Fa "uint16_t host16"
67.Fc
68.Ft uint32_t
69.Fo htobe32
70.Fa "uint32_t host32"
71.Fc
72.Ft uint64_t
73.Fo htobe64
74.Fa "uint64_t host64"
75.Fc
76.Ft uint16_t
77.Fo htole16
78.Fa "uint16_t host16"
79.Fc
80.Ft uint32_t
81.Fo htole32
82.Fa "uint32_t host32"
83.Fc
84.Ft uint64_t
85.Fo htole64
86.Fa "uint64_t host64"
87.Fc
88.Ft uint16_t
89.Fo le16toh
90.Fa "uint16_t le16"
91.Fc
92.Ft uint32_t
93.Fo le32toh
94.Fa "uint32_t le32"
95.Fc
96.Ft uint64_t
97.Fo le64toh
98.Fa "uint64_t le64"
99.Fc
100.Ft uint16_t
101.Fo letoh16
102.Fa "uint16_t le16"
103.Fc
104.Ft uint32_t
105.Fo letoh32
106.Fa "uint32_t le32"
107.Fc
108.Ft uint64_t
109.Fo letoh64
110.Fa "uint64_t le64"
111.Fc
112.Sh DESCRIPTION
113The
114.Nm
115family of functions convert 16, 32, and 64-bit values between the host's
116native byte order and big- or little-endian. All of the functions in
117this family simply return their input when the host's native byte order
118is the same as the desired order. For more information on
119endianness, see
120.Xr byteorder 5 .
121.Pp
122The
123.Fn betoh16 ,
124.Fn betoh32 ,
125and
126.Fn betoh64
127functions take a 16-bit, 32-bit, or 64-bit value and convert it from
128big-endian to the host's native endianness, swapping bytes as required.
129.Pp
130The
131.Fn letoh16 ,
132.Fn letoh32 ,
133and
134.Fn letoh64
135functions take a 16-bit, 32-bit, or 64-bit value and convert it from
136little-endian to the host's native endianness, swapping bytes as
137required.
138.Pp
139The
140.Fn htobe16 ,
141.Fn htobe32 ,
142and
143.Fn htobe64
144functions take a 16-bit, 32-bit, or 64-bit value and convert it from
145the host's native endianness to big-endian, swapping bytes as required.
146.Pp
147The
148.Fn htole16 ,
149.Fn htole32 ,
150and
151.Fn htole64
152functions take a 16-bit, 32-bit, or 64-bit value and convert it from
153the host's native endianness to little-endian, swapping bytes as
154required.
155.Pp
156The functions
157.Fn be16toh ,
158.Fn be32toh ,
159.Fn be64toh ,
160.Fn le16toh ,
161.Fn le32toh ,
162and
163.Fn le64toh ,
164are the same as
165.Fn betoh16 ,
166.Fn betoh32 ,
167.Fn betoh64 ,
168.Fn letoh16 ,
169.Fn letoh32 ,
170and
171.Fn letoh64
172respectively. Historically, different platforms have diverged on the
173naming of these functions. To better support extant software, both are
174provided.
175.Pp
176While these functions are common across multiple platforms, they have
177not been standardized. Portable applications should instead use the
178functions defined in
179.Xr byteorder 3C .
180.Sh RETURN VALUES
181The functions always succeed and return a value that has been properly
182converted.
183.Sh INTERFACE STABILITY
184.Sy Committed
185.Sh MT-LEVEL
186.Sy MT-Safe
187.Sh SEE ALSO
188.Xr byteorder 3C ,
189.Xr endian.h 3HEAD ,
190.Xr attributes 5 ,
191.Xr byteorder 5
192