add in PeiPiLib

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/branches/PI_PeiCore_Enable@3910 6f19259b-4bc3-4df7-8a09-765794883524
diff --git a/trunk/edk2/MdePkg/Include/Library/PeiPiLib.h b/trunk/edk2/MdePkg/Include/Library/PeiPiLib.h
new file mode 100644
index 0000000..a34fd50
--- /dev/null
+++ b/trunk/edk2/MdePkg/Include/Library/PeiPiLib.h
@@ -0,0 +1,30 @@
+/** @file

+  MDE PI library functions and macros for PEI phase

+

+  Copyright (c) 2007, Intel Corporation                                                         

+  All rights reserved. This program and the accompanying materials                          

+  are licensed and made available under the terms and conditions of the BSD License         

+  which accompanies this distribution.  The full text of the license may be found at        

+  http://opensource.org/licenses/bsd-license.php                                            

+

+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     

+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

+

+**/

+

+#ifndef __PEI_PI_LIB_H__

+#define __PEI_PI_LIB_H__

+

+#include <Pi/PiFirmwareFile.h>

+

+VOID

+EFIAPI

+PeiPiLibBuildPiFvInfoPpi (

+  IN EFI_PHYSICAL_ADDRESS    FvStart,

+  IN UINT64                  FvLength,

+  IN EFI_GUID                *ParentFvName,

+  IN EFI_GUID                *PraentFileName

+);

+

+#endif

+

diff --git a/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.c b/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.c
new file mode 100644
index 0000000..49894df
--- /dev/null
+++ b/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.c
@@ -0,0 +1,67 @@
+/** @file

+  MDE PI library functions and macros for PEI phase

+

+  Copyright (c) 2007, Intel Corporation                                                         

+  All rights reserved. This program and the accompanying materials                          

+  are licensed and made available under the terms and conditions of the BSD License         

+  which accompanies this distribution.  The full text of the license may be found at        

+  http://opensource.org/licenses/bsd-license.php                                            

+

+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     

+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

+

+**/

+

+#include <PiPei.h>

+#include <Ppi/FirmwareVolumeInfo.h>

+#include <Guid/FirmwareFileSystem2.h>

+

+

+#include <Library/DebugLib.h>

+#include <Library/MemoryAllocationLib.h>

+#include <Library/PeiServicesLib.h>

+#include <Library/PeiPiLib.h>

+

+

+STATIC CONST EFI_PEI_FIRMWARE_VOLUME_INFO_PPI mFvInfoPpiTemplate = {

+  EFI_FIRMWARE_FILE_SYSTEM2_GUID,

+  NULL,

+  0,    //FvInfoSize

+  NULL, //ParentFvName

+  NULL //ParentFileName;

+};

+

+VOID

+EFIAPI

+PeiPiLibBuildPiFvInfoPpi (

+  IN EFI_PHYSICAL_ADDRESS    FvStart,

+  IN UINT64                  FvLength,

+  IN EFI_GUID                *ParentFvName,

+  IN EFI_GUID                *ParentFileName

+  ) {

+  

+  EFI_STATUS                       Status;   

+  EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *FvInfoPpi;

+  EFI_PEI_PPI_DESCRIPTOR           *FvInfoPpiDescriptor;

+

+  FvInfoPpi = AllocateCopyPool (sizeof (*FvInfoPpi), &mFvInfoPpiTemplate);

+  ASSERT( FvInfoPpi != NULL);

+

+  FvInfoPpi->FvInfo = (VOID *) (UINTN) FvStart;

+  FvInfoPpi->FvInfoSize = (UINT32) FvLength;

+  FvInfoPpi->ParentFvName = ParentFvName;

+  FvInfoPpi->ParentFileName = ParentFileName;

+

+

+  FvInfoPpiDescriptor = AllocatePool (sizeof(EFI_PEI_PPI_DESCRIPTOR));

+  ASSERT (FvInfoPpiDescriptor != NULL);

+

+  FvInfoPpiDescriptor->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;

+  FvInfoPpiDescriptor->Guid  = &gEfiPeiFirmwareVolumeInfoPpiGuid;

+  FvInfoPpiDescriptor->Ppi   = (VOID *) FvInfoPpi;

+  Status = PeiServicesInstallPpi (FvInfoPpiDescriptor);

+  ASSERT_EFI_ERROR (Status);

+

+   

+}

+

diff --git a/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.inf b/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.inf
new file mode 100644
index 0000000..61e9061
--- /dev/null
+++ b/trunk/edk2/MdePkg/Library/PeiPiLib/PeiPiLib.inf
@@ -0,0 +1,50 @@
+#/** @file

+# Component description file library instance for PiLib for PEI phase.

+#

+# Library to abstract utility functions that is related to PI Specification.

+#

+# Copyright (c) 2007, Intel Corporation.

+#

+#  All rights reserved. This program and the accompanying materials

+#  are licensed and made available under the terms and conditions of the BSD License

+#  which accompanies this distribution. The full text of the license may be found at

+#  http://opensource.org/licenses/bsd-license.php

+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,

+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

+#

+#

+#**/

+

+[Defines]

+  INF_VERSION                    = 0x00010005

+  BASE_NAME                      = PeiPiLib

+  FILE_GUID                      = 6196FE81-4FA4-469a-B759-2C4DFE935B79

+  MODULE_TYPE                    = PEIM

+  VERSION_STRING                 = 1.0

+  LIBRARY_CLASS                  = PiLib|PEIM

+  EDK_RELEASE_VERSION            = 0x00020000

+  EFI_SPECIFICATION_VERSION      = 0x00020000

+

+

+#

+#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC

+#

+

+[Sources.common]

+  PeiPiLib.c

+

+[Packages]

+  MdePkg/MdePkg.dec

+

+

+[LibraryClasses]

+  MemoryAllocationLib

+  DebugLib

+

+[Guids]

+

+[Ppis]

+  gEfiPeiFirmwareVolumeInfoPpiGuid

+

+

+

diff --git a/trunk/edk2/MdePkg/MdePkg.dsc b/trunk/edk2/MdePkg/MdePkg.dsc
index c7c8d97..4f0e19d 100644
--- a/trunk/edk2/MdePkg/MdePkg.dsc
+++ b/trunk/edk2/MdePkg/MdePkg.dsc
@@ -82,6 +82,7 @@
   MdePkg/Library/PeiMemoryLib/PeiMemoryLib.inf

   MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf

   MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  MdePkg/Library/PeiPiLib/PeiPiLib.inf

   MdePkg/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf

   MdePkg/Library/PeiServicesLib/PeiServicesLib.inf

   MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf