]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
f7b44f5270590f8077f79d7e7cacadd7a06a2f04
[mirror_edk2.git] / ArmPkg / Library / BaseMemoryLibStm / MemLibInternals.h
1 /** @file
2 Declaration of internal functions for Base Memory Library.
3
4 The following BaseMemoryLib instances contain the same copy of this file:
5 BaseMemoryLib
6 BaseMemoryLibMmx
7 BaseMemoryLibSse2
8 BaseMemoryLibRepStr
9 BaseMemoryLibOptDxe
10 BaseMemoryLibOptPei
11
12 Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
13 This program and the accompanying materials
14 are licensed and made available under the terms and conditions of the BSD License
15 which accompanies this distribution. The full text of the license may be found at
16 http://opensource.org/licenses/bsd-license.php
17
18 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
19 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20
21 **/
22
23 #ifndef __MEM_LIB_INTERNALS__
24 #define __MEM_LIB_INTERNALS__
25
26 #include <Base.h>
27 #include <Library/BaseMemoryLib.h>
28 #include <Library/BaseLib.h>
29 #include <Library/DebugLib.h>
30
31 /**
32 Copy Length bytes from Source to Destination.
33
34 @param DestinationBuffer Target of copy
35 @param SourceBuffer Place to copy from
36 @param Length Number of bytes to copy
37
38 @return Destination
39
40 **/
41 VOID *
42 EFIAPI
43 InternalMemCopyMem (
44 OUT VOID *DestinationBuffer,
45 IN CONST VOID *SourceBuffer,
46 IN UINTN Length
47 );
48
49 /**
50 Set Buffer to Value for Size bytes.
51
52 @param Buffer Memory to set.
53 @param Length Number of bytes to set
54 @param Value Value of the set operation.
55
56 @return Buffer
57
58 **/
59 VOID *
60 EFIAPI
61 InternalMemSetMem (
62 OUT VOID *Buffer,
63 IN UINTN Length,
64 IN UINT8 Value
65 );
66
67 /**
68 Fills a target buffer with a 16-bit value, and returns the target buffer.
69
70 @param Buffer Pointer to the target buffer to fill.
71 @param Length Count of 16-bit value to fill.
72 @param Value Value with which to fill Length bytes of Buffer.
73
74 @return Buffer
75
76 **/
77 VOID *
78 EFIAPI
79 InternalMemSetMem16 (
80 OUT VOID *Buffer,
81 IN UINTN Length,
82 IN UINT16 Value
83 );
84
85 /**
86 Fills a target buffer with a 32-bit value, and returns the target buffer.
87
88 @param Buffer Pointer to the target buffer to fill.
89 @param Length Count of 32-bit value to fill.
90 @param Value Value with which to fill Length bytes of Buffer.
91
92 @return Buffer
93
94 **/
95 VOID *
96 EFIAPI
97 InternalMemSetMem32 (
98 OUT VOID *Buffer,
99 IN UINTN Length,
100 IN UINT32 Value
101 );
102
103 /**
104 Fills a target buffer with a 64-bit value, and returns the target buffer.
105
106 @param Buffer Pointer to the target buffer to fill.
107 @param Length Count of 64-bit value to fill.
108 @param Value Value with which to fill Length bytes of Buffer.
109
110 @return Buffer
111
112 **/
113 VOID *
114 EFIAPI
115 InternalMemSetMem64 (
116 OUT VOID *Buffer,
117 IN UINTN Length,
118 IN UINT64 Value
119 );
120
121 /**
122 Set Buffer to 0 for Size bytes.
123
124 @param Buffer Memory to set.
125 @param Length Number of bytes to set
126
127 @return Buffer
128
129 **/
130 VOID *
131 EFIAPI
132 InternalMemZeroMem (
133 OUT VOID *Buffer,
134 IN UINTN Length
135 );
136
137 /**
138 Compares two memory buffers of a given length.
139
140 @param DestinationBuffer First memory buffer
141 @param SourceBuffer Second memory buffer
142 @param Length Length of DestinationBuffer and SourceBuffer memory
143 regions to compare. Must be non-zero.
144
145 @return 0 All Length bytes of the two buffers are identical.
146 @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first
147 mismatched byte in DestinationBuffer.
148
149 **/
150 INTN
151 EFIAPI
152 InternalMemCompareMem (
153 IN CONST VOID *DestinationBuffer,
154 IN CONST VOID *SourceBuffer,
155 IN UINTN Length
156 );
157
158 /**
159 Scans a target buffer for an 8-bit value, and returns a pointer to the
160 matching 8-bit value in the target buffer.
161
162 @param Buffer Pointer to the target buffer to scan.
163 @param Length Count of 8-bit value to scan. Must be non-zero.
164 @param Value Value to search for in the target buffer.
165
166 @return Pointer to the first occurrence or NULL if not found.
167
168 **/
169 CONST VOID *
170 EFIAPI
171 InternalMemScanMem8 (
172 IN CONST VOID *Buffer,
173 IN UINTN Length,
174 IN UINT8 Value
175 );
176
177 /**
178 Scans a target buffer for a 16-bit value, and returns a pointer to the
179 matching 16-bit value in the target buffer.
180
181 @param Buffer Pointer to the target buffer to scan.
182 @param Length Count of 16-bit value to scan. Must be non-zero.
183 @param Value Value to search for in the target buffer.
184
185 @return Pointer to the first occurrence or NULL if not found.
186
187 **/
188 CONST VOID *
189 EFIAPI
190 InternalMemScanMem16 (
191 IN CONST VOID *Buffer,
192 IN UINTN Length,
193 IN UINT16 Value
194 );
195
196 /**
197 Scans a target buffer for a 32-bit value, and returns a pointer to the
198 matching 32-bit value in the target buffer.
199
200 @param Buffer Pointer to the target buffer to scan.
201 @param Length Count of 32-bit value to scan. Must be non-zero.
202 @param Value Value to search for in the target buffer.
203
204 @return Pointer to the first occurrence or NULL if not found.
205
206 **/
207 CONST VOID *
208 EFIAPI
209 InternalMemScanMem32 (
210 IN CONST VOID *Buffer,
211 IN UINTN Length,
212 IN UINT32 Value
213 );
214
215 /**
216 Scans a target buffer for a 64-bit value, and returns a pointer to the
217 matching 64-bit value in the target buffer.
218
219 @param Buffer Pointer to the target buffer to scan.
220 @param Length Count of 64-bit value to scan. Must be non-zero.
221 @param Value Value to search for in the target buffer.
222
223 @return Pointer to the first occurrence or NULL if not found.
224
225 **/
226 CONST VOID *
227 EFIAPI
228 InternalMemScanMem64 (
229 IN CONST VOID *Buffer,
230 IN UINTN Length,
231 IN UINT64 Value
232 );
233
234 /**
235 Checks whether the contents of a buffer are all zeros.
236
237 @param Buffer The pointer to the buffer to be checked.
238 @param Length The size of the buffer (in bytes) to be checked.
239
240 @retval TRUE Contents of the buffer are all zeros.
241 @retval FALSE Contents of the buffer are not all zeros.
242
243 **/
244 BOOLEAN
245 EFIAPI
246 InternalMemIsZeroBuffer (
247 IN CONST VOID *Buffer,
248 IN UINTN Length
249 );
250
251 #endif