]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/CompareMemWrapper.c
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Library / BaseMemoryLib / CompareMemWrapper.c
CommitLineData
3eb9473e 1/*++\r
2\r
3e99020d 3Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
2c7e5c2f 4This program and the accompanying materials \r
3eb9473e 5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 CompareMemWrapper.c\r
15 \r
16Abstract: \r
17 \r
18 CompareMem() implementation.\r
19\r
20--*/\r
21\r
22#include "BaseMemoryLibInternal.h"\r
23\r
24/**\r
25 Compares the contents of two buffers.\r
26\r
27 This function compares Length bytes of SourceBuffer to Length bytes of DestinationBuffer.\r
28 If all Length bytes of the two buffers are identical, then 0 is returned. Otherwise, the\r
29 value returned is the first mismatched byte in SourceBuffer subtracted from the first\r
30 mismatched byte in DestinationBuffer.\r
31 If Length > 0 and DestinationBuffer is NULL and Length > 0, then ASSERT().\r
32 If Length > 0 and SourceBuffer is NULL and Length > 0, then ASSERT().\r
33 If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT(). \r
34 If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT(). \r
35\r
36\r
37 @param DestinationBuffer Pointer to the destination buffer to compare.\r
38 @param SourceBuffer Pointer to the source buffer to compare.\r
39 @param Length Number of bytes to compare.\r
40\r
41 @return 0 All Length bytes of the two buffers are identical.\r
42 @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first\r
43 mismatched byte in DestinationBuffer.\r
44\r
45**/\r
46INTN\r
47EFIAPI\r
48GlueCompareMem (\r
49 IN CONST VOID *DestinationBuffer,\r
50 IN CONST VOID *SourceBuffer,\r
51 IN UINTN Length\r
52 )\r
53{\r
3e99020d 54 if (Length == 0 || DestinationBuffer == SourceBuffer) {\r
3eb9473e 55 return 0;\r
56 }\r
57 ASSERT (DestinationBuffer != NULL);\r
58 ASSERT (SourceBuffer != NULL);\r
59 ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer));\r
60 ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer));\r
61\r
62 return InternalMemCompareMem (DestinationBuffer, SourceBuffer, Length);\r
63}\r