]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add PeiServicesInstallFvInfoPpi(). It is formerly PiLibInstallFvInfoPpi() in PeiPiLib
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 08:59:25 +0000 (08:59 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 08:59:25 +0000 (08:59 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6510 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/PeiServicesLib/PeiServicesLib.c
MdePkg/Library/PeiServicesLib/PeiServicesLib.inf

index f3ef83a8a85331b68595f28e49a256e0c723f7f8..599eb2e3e1e8ce3ba9ba34433467da520942ee5f 100644 (file)
 \r
 #include <PiPei.h>\r
 \r
+#include <Ppi/FirmwareVolumeInfo.h>\r
+#include <Guid/FirmwareFileSystem2.h>\r
 \r
 #include <Library/PeiServicesLib.h>\r
 #include <Library/PeiServicesTablePointerLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_PEI_PPI_DESCRIPTOR     mPpiListTemplate [] = {\r
+  {\r
+    (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+    &gEfiPeiFirmwareVolumeInfoPpiGuid,\r
+    NULL\r
+  }\r
+};\r
 \r
 /**\r
   This service enables a given PEIM to register an interface into the PEI Foundation.\r
@@ -505,3 +519,62 @@ PeiServicesFfsGetVolumeInfo (
   return (*GetPeiServicesTablePointer())->FfsGetVolumeInfo (VolumeHandle, VolumeInfo);\r
 }\r
 \r
+/**\r
+  Install a EFI_PEI_FIRMWARE_VOLUME_INFO PPI to inform PEI core about the existence of a new Firmware Volume.\r
+  \r
+  The function allocate the EFI_PEI_PPI_DESCRIPTOR structure and update the fields accordingly to parameter passed\r
+  in and install the PPI.\r
+  \r
+  @param  FvFormat             Unique identifier of the format of the memory-mapped firmware volume. \r
+                               If NULL is specified, EFI_FIRMWARE_FILE_SYSTEM2_GUID is used as the Format GUID.\r
+  @param  FvInfo               Points to a buffer which allows the EFI_PEI_FIRMWARE_VOLUME_PPI to\r
+                               process the volume. The format of this buffer is specific to the FvFormat. For\r
+                               memory-mapped firmware volumes, this typically points to the first byte of the\r
+                               firmware volume.\r
+  @param  FvInfoSize           Size of the data provided by FvInfo. For memory-mapped firmware volumes, this is\r
+                               typically the size of the firmware volume.\r
+  @param  ParentFvName         If the firmware volume originally came from a firmware file, then these point to the\r
+                               parent firmware volume name. If it did not originally come from a firmware file, \r
+                               these should be NULL.\r
+  @param  ParentFileName       If the firmware volume originally came from a firmware file, then these point to the\r
+                               firmware volume file. If it did not originally come from a firmware file, \r
+                               these should be NULL.\r
+   \r
+**/\r
+VOID\r
+EFIAPI\r
+PeiServicesInstallFvInfoPpi (\r
+  IN CONST EFI_GUID                *FvFormat, OPTIONAL\r
+  IN CONST VOID                    *FvInfo,\r
+  IN       UINT32                  FvInfoSize,\r
+  IN CONST EFI_GUID                *ParentFvName, OPTIONAL\r
+  IN CONST EFI_GUID                *ParentFileName OPTIONAL\r
+  )\r
+{\r
+  EFI_STATUS                       Status;   \r
+  EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *FvInfoPpi;\r
+  EFI_PEI_PPI_DESCRIPTOR           *FvInfoPpiDescriptor;\r
+\r
+  FvInfoPpi = AllocateZeroPool (sizeof (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI));\r
+  ASSERT( FvInfoPpi != NULL);\r
+\r
+  if (FvFormat != NULL) {\r
+    CopyGuid (&FvInfoPpi->FvFormat, FvFormat);\r
+  } else {\r
+    CopyGuid (&FvInfoPpi->FvFormat, &gEfiFirmwareFileSystem2Guid);\r
+  }\r
+  FvInfoPpi->FvInfo = (VOID *) FvInfo;\r
+  FvInfoPpi->FvInfoSize = FvInfoSize;\r
+  FvInfoPpi->ParentFvName = (EFI_GUID *) ParentFvName;\r
+  FvInfoPpi->ParentFileName = (EFI_GUID *) ParentFileName;\r
+\r
+\r
+  FvInfoPpiDescriptor = AllocateCopyPool (sizeof(EFI_PEI_PPI_DESCRIPTOR), mPpiListTemplate);\r
+  ASSERT (FvInfoPpiDescriptor != NULL);\r
+\r
+  FvInfoPpiDescriptor->Ppi   = (VOID *) FvInfoPpi;\r
+  Status = PeiServicesInstallPpi (FvInfoPpiDescriptor);\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+}\r
+\r
index fb58f02b1e508558c08461bb46a41f46a8148a8a..5e5228629044a9be8f142f7228ffa481b34fd124 100644 (file)
 [Packages]\r
   MdePkg/MdePkg.dec\r
 \r
-\r
 [LibraryClasses]\r
   PeiServicesTablePointerLib\r
+  MemoryAllocationLib\r
+  DebugLib\r
+\r
+[Guids]\r
+  gEfiFirmwareFileSystem2Guid\r
+\r
+[Ppis]\r
+  gEfiPeiFirmwareVolumeInfoPpiGuid\r
+\r
+\r
 \r