1 /** @file
2 Common library assistance routines.
3 
4 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution.  The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
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 
15 #ifndef _EFI_COMMON_LIB_H
16 #define _EFI_COMMON_LIB_H
17 
18 #include <Common/UefiBaseTypes.h>
19 #include <Common/BuildVersion.h>
20 #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination
21 
22 #define MAX_LONG_FILE_PATH 500
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 //
29 // Function declarations
30 //
31 VOID
32 PeiZeroMem (
33   IN VOID   *Buffer,
34   IN UINTN  Size
35   )
36 ;
37 
38 VOID
39 PeiCopyMem (
40   IN VOID   *Destination,
41   IN VOID   *Source,
42   IN UINTN  Length
43   )
44 ;
45 
46 VOID
47 ZeroMem (
48   IN VOID   *Buffer,
49   IN UINTN  Size
50   )
51 ;
52 
53 VOID
54 CopyMem (
55   IN VOID   *Destination,
56   IN VOID   *Source,
57   IN UINTN  Length
58   )
59 ;
60 
61 INTN
62 CompareGuid (
63   IN EFI_GUID     *Guid1,
64   IN EFI_GUID     *Guid2
65   )
66 ;
67 
68 EFI_STATUS
69 GetFileImage (
70   IN CHAR8    *InputFileName,
71   OUT CHAR8   **InputFileImage,
72   OUT UINT32  *BytesRead
73   )
74 ;
75 
76 EFI_STATUS
77 PutFileImage (
78   IN CHAR8    *OutputFileName,
79   IN CHAR8    *OutputFileImage,
80   IN UINT32   BytesToWrite
81   )
82 ;
83 /*++
84 
85 Routine Description:
86 
87   This function opens a file and writes OutputFileImage into the file.
88 
89 Arguments:
90 
91   OutputFileName     The name of the file to write.
92   OutputFileImage    A pointer to the memory buffer.
93   BytesToWrite       The size of the memory buffer.
94 
95 Returns:
96 
97   EFI_SUCCESS              The function completed successfully.
98   EFI_INVALID_PARAMETER    One of the input parameters was invalid.
99   EFI_ABORTED              An error occurred.
100   EFI_OUT_OF_RESOURCES     No resource to complete operations.
101 
102 **/
103 
104 UINT8
105 CalculateChecksum8 (
106   IN UINT8        *Buffer,
107   IN UINTN        Size
108   )
109 ;
110 
111 UINT8
112 CalculateSum8 (
113   IN UINT8        *Buffer,
114   IN UINTN        Size
115   )
116 ;
117 
118 UINT16
119 CalculateChecksum16 (
120   IN UINT16       *Buffer,
121   IN UINTN        Size
122   )
123 ;
124 
125 UINT16
126 CalculateSum16 (
127   IN UINT16       *Buffer,
128   IN UINTN        Size
129   )
130 ;
131 
132 EFI_STATUS
133 PrintGuid (
134   IN EFI_GUID                     *Guid
135   )
136 ;
137 
138 #define PRINTED_GUID_BUFFER_SIZE  37  // including null-termination
139 EFI_STATUS
140 PrintGuidToBuffer (
141   IN EFI_GUID     *Guid,
142   IN OUT UINT8    *Buffer,
143   IN UINT32       BufferLen,
144   IN BOOLEAN      Uppercase
145   )
146 ;
147 
148 CHAR8 *
149 LongFilePath (
150  IN CHAR8 *FileName
151 );
152 /*++
153 
154 Routine Description:
155   Convert FileName to the long file path, which can support larger than 260 length.
156 
157 Arguments:
158   FileName         - FileName.
159 
160 Returns:
161   LongFilePath      A pointer to the converted long file path.
162 
163 --*/
164 
165 #ifdef __cplusplus
166 }
167 #endif
168 
169 #define ASSERT(x) assert(x)
170 
171 #ifdef __GNUC__
172 #include <stdio.h>
173 #include <sys/stat.h>
174 #define stricmp strcasecmp
175 #define _stricmp strcasecmp
176 #define strnicmp strncasecmp
177 #define strcmpi strcasecmp
178 size_t _filelength(int fd);
179 #ifndef __CYGWIN__
180 char *strlwr(char *s);
181 #endif
182 #endif
183 
184 //
185 // On windows, mkdir only has one parameter.
186 // On unix, it has two parameters
187 //
188 #if defined(__GNUC__)
189 #define mkdir(dir, perm) mkdir(dir, perm)
190 #else
191 #define mkdir(dir, perm) mkdir(dir)
192 #endif
193 
194 #endif
195