]> git.proxmox.com Git - mirror_edk2.git/blob - StdLib/LibC/Main/HtoNtoH.c
Standard Libraries for EDK II.
[mirror_edk2.git] / StdLib / LibC / Main / HtoNtoH.c
1 /** @File
2 Routines for translating between host and network byte-order.
3
4 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available
6 under the terms and conditions of the BSD License that accompanies this
7 distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14 #include <Library/BaseLib.h>
15 #include <LibConfig.h>
16 #include <sys/endian.h>
17
18 // Undefine macro versions of the functions to be defined below.
19 #undef htonl
20 #undef htons
21 #undef ntohl
22 #undef ntohs
23
24 /** 32-bit Host to Network byte order conversion.
25
26 @param[in] Datum The 32-bit value to be converted.
27 @return Datum, converted to network byte order.
28 **/
29 uint32_t
30 htonl(
31 IN uint32_t Datum
32 )
33 {
34 #if BYTE_ORDER == LITTLE_ENDIAN
35 return SwapBytes32(Datum);
36 #else
37 return Datum;
38 #endif
39 }
40
41 /** 16-bit Host to Network byte order conversion.
42
43 @param[in] Datum The 16-bit value to be converted.
44 @return Datum, converted to network byte order.
45 **/
46 uint16_t
47 htons(
48 IN uint16_t Datum
49 )
50 {
51 #if BYTE_ORDER == LITTLE_ENDIAN
52 return SwapBytes16(Datum);
53 #else
54 return Datum;
55 #endif
56 }
57
58 /** 32-bit Network to Host byte order conversion.
59
60 @param[in] Datum The 16-bit value to be converted.
61 @return Datum, converted to host byte order.
62 **/
63 uint32_t
64 ntohl(
65 IN uint32_t Datum
66 )
67 {
68 #if BYTE_ORDER == LITTLE_ENDIAN
69 return SwapBytes32(Datum);
70 #else
71 return Datum;
72 #endif
73 }
74
75 /** 16-bit Network to Host byte order conversion.
76
77 @param[in] Datum The 16-bit value to be converted.
78 @return Datum, converted to host byte order.
79 **/
80 uint16_t
81 ntohs(
82 IN uint16_t Datum
83 )
84 {
85 #if BYTE_ORDER == LITTLE_ENDIAN
86 return SwapBytes16(Datum);
87 #else
88 return Datum;
89 #endif
90 }