xref: /titanic_50/usr/src/man/man3c/endian.3c (revision 3b4b8bda7949c2c1bf610c9f0413accc9d26119a)
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.\" Copyright 2016 Joyent, Inc.
13*3b4b8bdaSRobert Mustacchi.\"
14*3b4b8bdaSRobert Mustacchi.Dd January 30, 2016
15*3b4b8bdaSRobert Mustacchi.Dt ENDIAN 3C
16*3b4b8bdaSRobert Mustacchi.Os
17*3b4b8bdaSRobert Mustacchi.Sh NAME
18*3b4b8bdaSRobert Mustacchi.Nm endian ,
19*3b4b8bdaSRobert Mustacchi.Nm be16toh ,
20*3b4b8bdaSRobert Mustacchi.Nm be32toh ,
21*3b4b8bdaSRobert Mustacchi.Nm be64toh ,
22*3b4b8bdaSRobert Mustacchi.Nm betoh16 ,
23*3b4b8bdaSRobert Mustacchi.Nm betoh32 ,
24*3b4b8bdaSRobert Mustacchi.Nm betoh64 ,
25*3b4b8bdaSRobert Mustacchi.Nm htobe16 ,
26*3b4b8bdaSRobert Mustacchi.Nm htobe32 ,
27*3b4b8bdaSRobert Mustacchi.Nm htobe64 ,
28*3b4b8bdaSRobert Mustacchi.Nm htole16 ,
29*3b4b8bdaSRobert Mustacchi.Nm htole32 ,
30*3b4b8bdaSRobert Mustacchi.Nm htole64 ,
31*3b4b8bdaSRobert Mustacchi.Nm le16toh ,
32*3b4b8bdaSRobert Mustacchi.Nm le32toh ,
33*3b4b8bdaSRobert Mustacchi.Nm le64toh ,
34*3b4b8bdaSRobert Mustacchi.Nm letoh16 ,
35*3b4b8bdaSRobert Mustacchi.Nm letoh32 ,
36*3b4b8bdaSRobert Mustacchi.Nm letoh64
37*3b4b8bdaSRobert Mustacchi.Nd convert between big and little endian byte order
38*3b4b8bdaSRobert Mustacchi.Sh SYNOPSIS
39*3b4b8bdaSRobert Mustacchi.In endian.h
40*3b4b8bdaSRobert Mustacchi.Ft uint16_t
41*3b4b8bdaSRobert Mustacchi.Fo be16toh
42*3b4b8bdaSRobert Mustacchi.Fa "uint16_t be16"
43*3b4b8bdaSRobert Mustacchi.Fc
44*3b4b8bdaSRobert Mustacchi.Ft uint32_t
45*3b4b8bdaSRobert Mustacchi.Fo be32toh
46*3b4b8bdaSRobert Mustacchi.Fa "uint32_t be32"
47*3b4b8bdaSRobert Mustacchi.Fc
48*3b4b8bdaSRobert Mustacchi.Ft uint64_t
49*3b4b8bdaSRobert Mustacchi.Fo betoh64
50*3b4b8bdaSRobert Mustacchi.Fa "uint64_t be64"
51*3b4b8bdaSRobert Mustacchi.Fc
52*3b4b8bdaSRobert Mustacchi.Ft uint16_t
53*3b4b8bdaSRobert Mustacchi.Fo betoh16
54*3b4b8bdaSRobert Mustacchi.Fa "uint16_t be16"
55*3b4b8bdaSRobert Mustacchi.Fc
56*3b4b8bdaSRobert Mustacchi.Ft uint32_t
57*3b4b8bdaSRobert Mustacchi.Fo betoh32
58*3b4b8bdaSRobert Mustacchi.Fa "uint32_t be32"
59*3b4b8bdaSRobert Mustacchi.Fc
60*3b4b8bdaSRobert Mustacchi.Ft uint64_t
61*3b4b8bdaSRobert Mustacchi.Fo be64toh
62*3b4b8bdaSRobert Mustacchi.Fa "uint64_t be64"
63*3b4b8bdaSRobert Mustacchi.Fc
64*3b4b8bdaSRobert Mustacchi.Ft uint16_t
65*3b4b8bdaSRobert Mustacchi.Fo htobe16
66*3b4b8bdaSRobert Mustacchi.Fa "uint16_t host16"
67*3b4b8bdaSRobert Mustacchi.Fc
68*3b4b8bdaSRobert Mustacchi.Ft uint32_t
69*3b4b8bdaSRobert Mustacchi.Fo htobe32
70*3b4b8bdaSRobert Mustacchi.Fa "uint32_t host32"
71*3b4b8bdaSRobert Mustacchi.Fc
72*3b4b8bdaSRobert Mustacchi.Ft uint64_t
73*3b4b8bdaSRobert Mustacchi.Fo htobe64
74*3b4b8bdaSRobert Mustacchi.Fa "uint64_t host64"
75*3b4b8bdaSRobert Mustacchi.Fc
76*3b4b8bdaSRobert Mustacchi.Ft uint16_t
77*3b4b8bdaSRobert Mustacchi.Fo htole16
78*3b4b8bdaSRobert Mustacchi.Fa "uint16_t host16"
79*3b4b8bdaSRobert Mustacchi.Fc
80*3b4b8bdaSRobert Mustacchi.Ft uint32_t
81*3b4b8bdaSRobert Mustacchi.Fo htole32
82*3b4b8bdaSRobert Mustacchi.Fa "uint32_t host32"
83*3b4b8bdaSRobert Mustacchi.Fc
84*3b4b8bdaSRobert Mustacchi.Ft uint64_t
85*3b4b8bdaSRobert Mustacchi.Fo htole64
86*3b4b8bdaSRobert Mustacchi.Fa "uint64_t host64"
87*3b4b8bdaSRobert Mustacchi.Fc
88*3b4b8bdaSRobert Mustacchi.Ft uint16_t
89*3b4b8bdaSRobert Mustacchi.Fo le16toh
90*3b4b8bdaSRobert Mustacchi.Fa "uint16_t le16"
91*3b4b8bdaSRobert Mustacchi.Fc
92*3b4b8bdaSRobert Mustacchi.Ft uint32_t
93*3b4b8bdaSRobert Mustacchi.Fo le32toh
94*3b4b8bdaSRobert Mustacchi.Fa "uint32_t le32"
95*3b4b8bdaSRobert Mustacchi.Fc
96*3b4b8bdaSRobert Mustacchi.Ft uint64_t
97*3b4b8bdaSRobert Mustacchi.Fo le64toh
98*3b4b8bdaSRobert Mustacchi.Fa "uint64_t le64"
99*3b4b8bdaSRobert Mustacchi.Fc
100*3b4b8bdaSRobert Mustacchi.Ft uint16_t
101*3b4b8bdaSRobert Mustacchi.Fo letoh16
102*3b4b8bdaSRobert Mustacchi.Fa "uint16_t le16"
103*3b4b8bdaSRobert Mustacchi.Fc
104*3b4b8bdaSRobert Mustacchi.Ft uint32_t
105*3b4b8bdaSRobert Mustacchi.Fo letoh32
106*3b4b8bdaSRobert Mustacchi.Fa "uint32_t le32"
107*3b4b8bdaSRobert Mustacchi.Fc
108*3b4b8bdaSRobert Mustacchi.Ft uint64_t
109*3b4b8bdaSRobert Mustacchi.Fo letoh64
110*3b4b8bdaSRobert Mustacchi.Fa "uint64_t le64"
111*3b4b8bdaSRobert Mustacchi.Fc
112*3b4b8bdaSRobert Mustacchi.Sh DESCRIPTION
113*3b4b8bdaSRobert MustacchiThe
114*3b4b8bdaSRobert Mustacchi.Nm
115*3b4b8bdaSRobert Mustacchifamily of functions convert 16, 32, and 64-bit values between the host's
116*3b4b8bdaSRobert Mustacchinative byte order and big- or little-endian. All of the functions in
117*3b4b8bdaSRobert Mustacchithis family simply return their input when the host's native byte order
118*3b4b8bdaSRobert Mustacchiis the same as the desired order. For more information on
119*3b4b8bdaSRobert Mustacchiendianness, see
120*3b4b8bdaSRobert Mustacchi.Xr byteorder 5 .
121*3b4b8bdaSRobert Mustacchi.Pp
122*3b4b8bdaSRobert MustacchiThe
123*3b4b8bdaSRobert Mustacchi.Fn betoh16 ,
124*3b4b8bdaSRobert Mustacchi.Fn betoh32 ,
125*3b4b8bdaSRobert Mustacchiand
126*3b4b8bdaSRobert Mustacchi.Fn betoh64
127*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
128*3b4b8bdaSRobert Mustacchibig-endian to the host's native endianness, swapping bytes as required.
129*3b4b8bdaSRobert Mustacchi.Pp
130*3b4b8bdaSRobert MustacchiThe
131*3b4b8bdaSRobert Mustacchi.Fn letoh16 ,
132*3b4b8bdaSRobert Mustacchi.Fn letoh32 ,
133*3b4b8bdaSRobert Mustacchiand
134*3b4b8bdaSRobert Mustacchi.Fn letoh64
135*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
136*3b4b8bdaSRobert Mustacchilittle-endian to the host's native endianness, swapping bytes as
137*3b4b8bdaSRobert Mustacchirequired.
138*3b4b8bdaSRobert Mustacchi.Pp
139*3b4b8bdaSRobert MustacchiThe
140*3b4b8bdaSRobert Mustacchi.Fn htobe16 ,
141*3b4b8bdaSRobert Mustacchi.Fn htobe32 ,
142*3b4b8bdaSRobert Mustacchiand
143*3b4b8bdaSRobert Mustacchi.Fn htobe64
144*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
145*3b4b8bdaSRobert Mustacchithe host's native endianness to big-endian, swapping bytes as required.
146*3b4b8bdaSRobert Mustacchi.Pp
147*3b4b8bdaSRobert MustacchiThe
148*3b4b8bdaSRobert Mustacchi.Fn htole16 ,
149*3b4b8bdaSRobert Mustacchi.Fn htole32 ,
150*3b4b8bdaSRobert Mustacchiand
151*3b4b8bdaSRobert Mustacchi.Fn htole64
152*3b4b8bdaSRobert Mustacchifunctions take a 16-bit, 32-bit, or 64-bit value and convert it from
153*3b4b8bdaSRobert Mustacchithe host's native endianness to little-endian, swapping bytes as
154*3b4b8bdaSRobert Mustacchirequired.
155*3b4b8bdaSRobert Mustacchi.Pp
156*3b4b8bdaSRobert MustacchiThe functions
157*3b4b8bdaSRobert Mustacchi.Fn be16toh ,
158*3b4b8bdaSRobert Mustacchi.Fn be32toh ,
159*3b4b8bdaSRobert Mustacchi.Fn be64toh ,
160*3b4b8bdaSRobert Mustacchi.Fn le16toh ,
161*3b4b8bdaSRobert Mustacchi.Fn le32toh ,
162*3b4b8bdaSRobert Mustacchiand
163*3b4b8bdaSRobert Mustacchi.Fn le64toh ,
164*3b4b8bdaSRobert Mustacchiare the same as
165*3b4b8bdaSRobert Mustacchi.Fn betoh16 ,
166*3b4b8bdaSRobert Mustacchi.Fn betoh32 ,
167*3b4b8bdaSRobert Mustacchi.Fn betoh64 ,
168*3b4b8bdaSRobert Mustacchi.Fn letoh16 ,
169*3b4b8bdaSRobert Mustacchi.Fn letoh32 ,
170*3b4b8bdaSRobert Mustacchiand
171*3b4b8bdaSRobert Mustacchi.Fn letoh64
172*3b4b8bdaSRobert Mustacchirespectively. Historically, different platforms have diverged on the
173*3b4b8bdaSRobert Mustacchinaming of these functions. To better support extant software, both are
174*3b4b8bdaSRobert Mustacchiprovided.
175*3b4b8bdaSRobert Mustacchi.Pp
176*3b4b8bdaSRobert MustacchiWhile these functions are common across multiple platforms, they have
177*3b4b8bdaSRobert Mustacchinot been standardized. Portable applications should instead use the
178*3b4b8bdaSRobert Mustacchifunctions defined in
179*3b4b8bdaSRobert Mustacchi.Xr byteorder 3C .
180*3b4b8bdaSRobert Mustacchi.Sh RETURN VALUES
181*3b4b8bdaSRobert MustacchiThe functions always succeed and return a value that has been properly
182*3b4b8bdaSRobert Mustacchiconverted.
183*3b4b8bdaSRobert Mustacchi.Sh INTERFACE STABILITY
184*3b4b8bdaSRobert Mustacchi.Sy Committed
185*3b4b8bdaSRobert Mustacchi.Sh MT-LEVEL
186*3b4b8bdaSRobert Mustacchi.Sy MT-Safe
187*3b4b8bdaSRobert Mustacchi.Sh SEE ALSO
188*3b4b8bdaSRobert Mustacchi.Xr byteorder 3C ,
189*3b4b8bdaSRobert Mustacchi.Xr endian.h 3HEAD ,
190*3b4b8bdaSRobert Mustacchi.Xr attributes 5 ,
191*3b4b8bdaSRobert Mustacchi.Xr byteorder 5
192