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 August 2, 2018
  15 .Dt ENDIAN.H 3HEAD
  16 .Os
  17 .Sh NAME
  18 .Nm endian.h
  19 .Nd definitions for endian routines
  20 .Sh SYNOPSIS
  21 .In endian.h
  22 .Sh DESCRIPTION
  23 The
  24 .In endian.h
  25 header defines functions and macros focused on converting data between
  26 the host machines native byte order and big or little-endian values.
  27 While the manual page details the macros defined by
  28 .In endian.h ,
  29 the functions are documented separately in
  30 .Xr endian 3C.
  31 More information on endianness and a general background on the topic can
  32 be found in
  33 .Xr byteorder 5 .
  34 .Pp
  35 The
  36 .In endian.h
  37 header defines the following macros:
  38 .Bl -tag -width Ds
  39 .It Sy LITTLE_ENDIAN
  40 A constant used to indicate a little-endian integer.
  41 It is always defined, regardless of the actual endianess of the underlying
  42 platform.
  43 This macro should be used to compare against the
  44 .Sy BYTE_ORDER
  45 macro.
  46 .It Sy BIG_ENDIAN
  47 A constant used to indicate a big-endian integer.
  48 It is always defined, regardless of the actual endianess of the underlying
  49 platform.
  50 This macro should be used to compare against the
  51 .Sy BYTE_ORDER
  52 macro.
  53 .It Sy PDP_ENDIAN
  54 A constant used to indicate the endianness used for four byte values on
  55 the PDP-11.
  56 It is always defined, regardless of the actual endianess of the underlying
  57 platform.
  58 This macro should be used to compare against the
  59 .Sy BYTE_ORDER
  60 macro.
  61 .It Sy BYTE_ORDER
  62 The value of the
  63 .Sy BYTE_ORDER
  64 macro will be one of
  65 .Sy LITTLE_ENDIAN
  66 or
  67 .Sy BIG_ENDIAN .
  68 At this time, no supported architectures use the byte order indicated by
  69 the
  70 .Sy PDP_ENDIAN
  71 macro.
  72 .Pp
  73 To determine the byte order of a system, one may compare the
  74 .Sy BYTE_ORDER
  75 to one of the aforementioned macros.
  76 .El
  77 .Pp
  78 In addition to the routines provided by this header, standardized
  79 functions may be found in
  80 .Xr byteorder 3C .
  81 The header
  82 .Xr types.h 3HEAD
  83 also defines additional pre-processor symbols to determine the current
  84 endianness of the system.
  85 .Sh INTERFACE STABILITY
  86 .Sy Committed
  87 .Sh SEE ALSO
  88 .Xr byteorder 3C ,
  89 .Xr endian 3C ,
  90 .Xr types.h 3HEAD ,
  91 .Xr attributes 5 ,
  92 .Xr byteorder 5