]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLib/CopyMemWrapper.c
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLib / CopyMemWrapper.c
index 155877fdde2b9b55665382eba605959e3785e662..1ac5f33f208c8e6c75c95fb4de0d955e19adc6fc 100644 (file)
@@ -1,60 +1,57 @@
 /** @file\r
   CopyMem() implementation.\r
 \r
-  Copyright (c) 2006, Intel Corporation<BR>\r
-  All rights reserved. This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-  Module Name:  CopyMemWrapper.c\r
-\r
-  The following BaseMemoryLib instances share the same version of this file:\r
+  The following BaseMemoryLib instances contain the same copy of this file:\r
 \r
     BaseMemoryLib\r
     BaseMemoryLibMmx\r
     BaseMemoryLibSse2\r
     BaseMemoryLibRepStr\r
+    BaseMemoryLibOptDxe\r
+    BaseMemoryLibOptPei\r
     PeiMemoryLib\r
     UefiMemoryLib\r
 \r
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
 **/\r
 \r
-#include "MemLibWrappers.h"\r
+#include "MemLibInternals.h"\r
 \r
 /**\r
-  Copy Length bytes from Source to Destination.\r
+  Copies a source buffer to a destination buffer, and returns the destination buffer.\r
 \r
-  This function copies Length bytes from SourceBuffer to DestinationBuffer, and\r
-  returns DestinationBuffer. The implementation must be reentrant, and it must\r
-  handle the case where SourceBuffer overlaps DestinationBuffer.\r
+  This function copies Length bytes from SourceBuffer to DestinationBuffer, and returns\r
+  DestinationBuffer.  The implementation must be reentrant, and it must handle the case\r
+  where SourceBuffer overlaps DestinationBuffer.\r
 \r
-  If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then\r
-  ASSERT().\r
+  If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT().\r
   If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT().\r
 \r
-  @param  Destination Target of copy\r
-  @param  Source Place to copy from\r
-  @param  Length Number of bytes to copy\r
+  @param  DestinationBuffer   A pointer to the destination buffer of the memory copy.\r
+  @param  SourceBuffer        A pointer to the source buffer of the memory copy.\r
+  @param  Length              The number of bytes to copy from SourceBuffer to DestinationBuffer.\r
 \r
-  @return Destination\r
+  @return DestinationBuffer.\r
 \r
 **/\r
 VOID *\r
 EFIAPI\r
 CopyMem (\r
-  OUT     VOID                      *Destination,\r
-  IN      CONST VOID                *Source,\r
-  IN      UINTN                     Length\r
+  OUT VOID       *DestinationBuffer,\r
+  IN CONST VOID  *SourceBuffer,\r
+  IN UINTN       Length\r
   )\r
 {\r
-  ASSERT (Length <= MAX_ADDRESS - (UINTN)Destination + 1);\r
-  ASSERT (Length <= MAX_ADDRESS - (UINTN)Source + 1);\r
-  if (Destination == Source || Length == 0) {\r
-    return Destination;\r
+  if (Length == 0) {\r
+    return DestinationBuffer;\r
+  }\r
+  ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer));\r
+  ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer));\r
+\r
+  if (DestinationBuffer == SourceBuffer) {\r
+    return DestinationBuffer;\r
   }\r
-  return InternalMemCopyMem (Destination, Source, Length);\r
+  return InternalMemCopyMem (DestinationBuffer, SourceBuffer, Length);\r
 }\r