]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLibOptPei/MemLibGuid.c
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibOptPei / MemLibGuid.c
index 6f6edd0d8ff2738a5b728202ca0493106a9c1ff9..319487dda961cf02d0a9e8b048c9f257d291f899 100644 (file)
@@ -2,7 +2,7 @@
   Implementation of GUID functions.\r
 \r
   The following BaseMemoryLib instances contain the same copy of this file:\r
-  \r
+\r
     BaseMemoryLib\r
     BaseMemoryLibMmx\r
     BaseMemoryLibSse2\r
     PeiMemoryLib\r
     UefiMemoryLib\r
 \r
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-  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
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -30,7 +24,7 @@
 \r
   This function copies the contents of the 128-bit GUID specified by SourceGuid to\r
   DestinationGuid, and returns DestinationGuid.\r
-  \r
+\r
   If DestinationGuid is NULL, then ASSERT().\r
   If SourceGuid is NULL, then ASSERT().\r
 \r
@@ -63,7 +57,7 @@ CopyGuid (
 \r
   This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.\r
   If there are any bit differences in the two GUIDs, then FALSE is returned.\r
-  \r
+\r
   If Guid1 is NULL, then ASSERT().\r
   If Guid2 is NULL, then ASSERT().\r
 \r
@@ -103,7 +97,7 @@ CompareGuid (
   GUID value that matches Guid.  If a match is found, then a pointer to the matching\r
   GUID in the target buffer is returned.  If no match is found, then NULL is returned.\r
   If Length is 0, then NULL is returned.\r
-  \r
+\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
@@ -140,3 +134,32 @@ ScanGuid (
   }\r
   return NULL;\r
 }\r
+\r
+/**\r
+  Checks if the given GUID is a zero GUID.\r
+\r
+  This function checks whether the given GUID is a zero GUID. If the GUID is\r
+  identical to a zero GUID then TRUE is returned. Otherwise, FALSE is returned.\r
+\r
+  If Guid is NULL, then ASSERT().\r
+\r
+  @param  Guid        The pointer to a 128 bit GUID.\r
+\r
+  @retval TRUE        Guid is a zero GUID.\r
+  @retval FALSE       Guid is not a zero GUID.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+IsZeroGuid (\r
+  IN CONST GUID  *Guid\r
+  )\r
+{\r
+  UINT64  LowPartOfGuid;\r
+  UINT64  HighPartOfGuid;\r
+\r
+  LowPartOfGuid  = ReadUnaligned64 ((CONST UINT64*) Guid);\r
+  HighPartOfGuid = ReadUnaligned64 ((CONST UINT64*) Guid + 1);\r
+\r
+  return (BOOLEAN) (LowPartOfGuid == 0 && HighPartOfGuid == 0);\r
+}\r