Merge the PI enabling works from the branch

First round of PI enabling work:
1) PiPeiCis changes (CONST, EFI_PEI_FILE_HANDLE.. etc)
2) Make use of FirmwareVolume 2 protocol.
3) Verified for Nt32Pkg and real platform for S3.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3772 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12 2007-09-04 06:11:47 +00:00
parent e1001af1d4
commit 1c280088ec
20 changed files with 508 additions and 142 deletions

View File

@ -30,7 +30,7 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesInstallPpi ( PeiServicesInstallPpi (
IN EFI_PEI_PPI_DESCRIPTOR *PpiList IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList
); );
/** /**
@ -51,8 +51,8 @@ PeiServicesInstallPpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesReInstallPpi ( PeiServicesReInstallPpi (
IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,
IN EFI_PEI_PPI_DESCRIPTOR *NewPpi IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi
); );
/** /**
@ -71,7 +71,7 @@ PeiServicesReInstallPpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesLocatePpi ( PeiServicesLocatePpi (
IN EFI_GUID *Guid, IN CONST EFI_GUID *Guid,
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,
IN OUT VOID **Ppi IN OUT VOID **Ppi
@ -94,7 +94,7 @@ PeiServicesLocatePpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesNotifyPpi ( PeiServicesNotifyPpi (
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
); );
/** /**
@ -176,7 +176,7 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindNextVolume ( PeiServicesFfsFindNextVolume (
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
); );
/** /**
@ -196,8 +196,8 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindNextFile ( PeiServicesFfsFindNextFile (
IN EFI_FV_FILETYPE SearchType, IN EFI_FV_FILETYPE SearchType,
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, IN EFI_PEI_FV_HANDLE VolumeHandle,
IN OUT EFI_FFS_FILE_HEADER **FileHeader IN OUT EFI_PEI_FILE_HANDLE *FileHandle
); );
/** /**
@ -216,7 +216,7 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindSectionData ( PeiServicesFfsFindSectionData (
IN EFI_SECTION_TYPE SectionType, IN EFI_SECTION_TYPE SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN EFI_PEI_FILE_HANDLE FileHandle,
IN OUT VOID **SectionData IN OUT VOID **SectionData
); );

View File

@ -0,0 +1,80 @@
/** @file
MDE PI library functions and macros
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 __PI_LIB_H__
#define __PI_LIB_H__
#include <Pi/PiFirmwareFile.h>
/**
Allocate and fill a buffer with an image identified by a Firmware File GUID name and a Firmware Section type.
The Firmware Volumes to search for the Firmware File can be specified to be either all Firmware Volumes
in the system, or the Firmware Volume which contains the Firmware File specified by an image handle.
If ImageHandle is NULL, all Firmware Volumes in the system will be searched. If ImageHandle is not NULL,
ImageHandle is interpreted as EFI_PEI_FILE_HANDLE for the implementation of this function for PEI phase.
The input parameter ImageHandle is interpreted as EFI_HANDLE, on which an EFI_LOADED_IMAGE_PROTOCOL
is installed, for the implementation of this function for DXE phase. The search always starts from the FV
identified by ImageHandle. If WithinImageFv is TRUE, search will only be performed on the first FV. If WithinImageFv
is FALSE, search will continue on other FVs if it fails on the first FV. The search order of Firmware Volumes is
deterministic but arbitrary if no new firmware volume is added into the system between each search.
The search order for the section type specified by SectionType in the Firmware File is using a depth-first
and left-to-right algorithm through all sections. The first section found to match SectionType will be returned.
If SectionType is EFI_SECTION_PE32, EFI_SECTION_PE32 will be used as Firmware Section type
to read Firmware Section data from the Firmware File. If no such section exists, the function will try
to read a Firmware File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned.
If SectionType is EFI_SECTION_TE, EFI_SECTION_TE will be used as Firmware Section type to read Firmware Section
data from the Firmware File. If no such section exists, EFI_SECTION_PE32 will be used as Firmware Section type to
read Firmware Section data from the Firmware File. If no such section exists, the function will try to read a Firmware
File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned.
The data and size is returned by Buffer and Size. The caller is responsible to free the Buffer allocated
by this function. This function can only be called at TPL_NOTIFY and below.
If ImageHandle is NULL and WithinImage is TRUE, then ASSERT ();
If NameGuid is NULL, then ASSERT();
If Buffer is NULL, then ASSERT();
If Size is NULL, then ASSERT().
@param NameGuid The GUID name of a Firmware File.
@param SectionType The Firmware Section type.
@param Buffer On output, Buffer contains the the data read from the section in the Firmware File found.
@param Size On output, the size of Buffer.
@retval EFI_SUCCESS The image is found and data and size is returned.
@retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found.
@retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations.
@retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume.
@retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads.
**/
EFI_STATUS
EFIAPI
GetSectionFromFvFile (
IN CONST VOID* ImageHandle OPTIONAL,
IN CONST EFI_GUID *NameGuid,
IN EFI_SECTION_TYPE SectionType,
OUT VOID **Buffer,
OUT UINTN *Size,
IN BOOLEAN WithImageFv
)
;
#endif

View File

@ -126,8 +126,8 @@ typedef struct _EFI_HOB_LOAD_PEIM {
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_INSTALL_PPI) ( (EFIAPI *EFI_PEI_INSTALL_PPI) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_PPI_DESCRIPTOR *PpiList IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList
); );
/** /**
@ -151,9 +151,9 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_REINSTALL_PPI) ( (EFIAPI *EFI_PEI_REINSTALL_PPI) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,
IN EFI_PEI_PPI_DESCRIPTOR *NewPpi IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi
); );
/** /**
@ -172,10 +172,10 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_LOCATE_PPI) ( (EFIAPI *EFI_PEI_LOCATE_PPI) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_GUID *Guid, IN CONST EFI_GUID *Guid,
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL,
IN OUT VOID **Ppi IN OUT VOID **Ppi
); );
@ -197,8 +197,8 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_NOTIFY_PPI) ( (EFIAPI *EFI_PEI_NOTIFY_PPI) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
); );
/** /**
@ -213,7 +213,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_GET_BOOT_MODE) ( (EFIAPI *EFI_PEI_GET_BOOT_MODE) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
OUT EFI_BOOT_MODE *BootMode OUT EFI_BOOT_MODE *BootMode
); );
@ -229,7 +229,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_SET_BOOT_MODE) ( (EFIAPI *EFI_PEI_SET_BOOT_MODE) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_BOOT_MODE BootMode IN EFI_BOOT_MODE BootMode
); );
@ -246,7 +246,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_GET_HOB_LIST) ( (EFIAPI *EFI_PEI_GET_HOB_LIST) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN OUT VOID **HobList IN OUT VOID **HobList
); );
@ -265,7 +265,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_CREATE_HOB) ( (EFIAPI *EFI_PEI_CREATE_HOB) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN UINT16 Type, IN UINT16 Type,
IN UINT16 Length, IN UINT16 Length,
IN OUT VOID **Hob IN OUT VOID **Hob
@ -279,19 +279,19 @@ EFI_STATUS
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
@param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV). @param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).
@param FwVolHeader Pointer to the firmware volume header of the volume to return. @param VolumeHandle On exit, points to the next volumn handle or NULL if it does not exist.
@retval EFI_SUCCESS The volume was found. @retval EFI_SUCCESS The volume was found.
@retval EFI_NOT_FOUND The volume was not found. @retval EFI_NOT_FOUND The volume was not found.
@retval EFI_INVALID_PARAMETER FwVolHeader is NULL @retval EFI_INVALID_PARAMETER VolHandle is NULL
**/ **/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) ( (EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader OUT EFI_PEI_FV_HANDLE *VolumeHandle
); );
/** /**
@ -315,10 +315,10 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) ( (EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_FV_FILETYPE SearchType, IN EFI_FV_FILETYPE SearchType,
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, IN EFI_PEI_FV_HANDLE VolumeHandle,
IN OUT EFI_FFS_FILE_HEADER **FileHeader IN OUT EFI_PEI_FILE_HANDLE *FileHandle
); );
/** /**
@ -337,9 +337,9 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) ( (EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_SECTION_TYPE SectionType, IN EFI_SECTION_TYPE SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN EFI_PEI_FILE_HANDLE FileHandle,
IN OUT VOID **SectionData IN OUT VOID **SectionData
); );
@ -358,7 +358,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) ( (EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_PHYSICAL_ADDRESS MemoryBegin, IN EFI_PHYSICAL_ADDRESS MemoryBegin,
IN UINT64 MemoryLength IN UINT64 MemoryLength
); );
@ -381,7 +381,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_ALLOCATE_PAGES) ( (EFIAPI *EFI_PEI_ALLOCATE_PAGES) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_MEMORY_TYPE MemoryType, IN EFI_MEMORY_TYPE MemoryType,
IN UINTN Pages, IN UINTN Pages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory IN OUT EFI_PHYSICAL_ADDRESS *Memory
@ -402,7 +402,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_ALLOCATE_POOL) ( (EFIAPI *EFI_PEI_ALLOCATE_POOL) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN UINTN Size, IN UINTN Size,
OUT VOID **Buffer OUT VOID **Buffer
); );
@ -470,12 +470,12 @@ VOID
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) ( (EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (
IN EFI_PEI_SERVICES **PeiServices, IN CONST EFI_PEI_SERVICES **PeiServices,
IN EFI_STATUS_CODE_TYPE Type, IN EFI_STATUS_CODE_TYPE Type,
IN EFI_STATUS_CODE_VALUE Value, IN EFI_STATUS_CODE_VALUE Value,
IN UINT32 Instance, IN UINT32 Instance,
IN EFI_GUID *CallerId OPTIONAL, IN CONST EFI_GUID *CallerId OPTIONAL,
IN EFI_STATUS_CODE_DATA *Data OPTIONAL IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL
); );
/** /**
@ -636,7 +636,7 @@ typedef struct {
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) ( (EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (
IN CONST EFI_PEI_FV_HANDLE *VolumeHandle, IN EFI_PEI_FV_HANDLE VolumeHandle,
OUT EFI_FV_INFO *VolumeInfo OUT EFI_FV_INFO *VolumeInfo
); );
@ -668,7 +668,7 @@ EFI_STATUS
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) ( (EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (
IN CONST EFI_PEI_FILE_HANDLE FileHandle IN EFI_PEI_FILE_HANDLE FileHandle
); );

View File

@ -41,10 +41,8 @@
PrintLib PrintLib
BaseLib BaseLib
[FixedPcd.common] [Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel
gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel

View File

@ -0,0 +1,256 @@
/** @file
Mde PI library functions.
Copyright (c) 2007, Intel Corporation<BR>
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 <PiDxe.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/FirmwareVolume2.h>
#include <Protocol/LoadedImage.h>
/**
Internal function which read the image specified by Firmware File GUID name and
the Firmware Section tyep from a specified Firmware Volume
@param Fv The Firmware Volume Protocol instance.
@param NameGuid The GUID name of a Firmware File.
@param SectionType The Firmware Section type.
@param Buffer On output, Buffer contains the the data read from the section in the Firmware File found.
@param Size On output, the size of Buffer.
@retval EFI_SUCCESS The image is found and data and size is returned.
@retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found.
@retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations.
@retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume.
@retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads.
**/
STATIC
EFI_STATUS
GetImageFromFv (
IN EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv,
IN CONST EFI_GUID *NameGuid,
IN EFI_SECTION_TYPE SectionType,
OUT VOID **Buffer,
OUT UINTN *Size
)
{
EFI_STATUS Status;
EFI_FV_FILETYPE FileType;
EFI_FV_FILE_ATTRIBUTES Attributes;
UINT32 AuthenticationStatus;
//
// Read desired section content in NameGuid file
//
*Buffer = NULL;
*Size = 0;
Status = Fv->ReadSection (
Fv,
NameGuid,
SectionType,
0,
Buffer,
Size,
&AuthenticationStatus
);
if (EFI_ERROR (Status) && (SectionType == EFI_SECTION_TE)) {
//
// Try reading PE32 section, since the TE section does not exist
//
*Buffer = NULL;
*Size = 0;
Status = Fv->ReadSection (
Fv,
NameGuid,
EFI_SECTION_PE32,
0,
Buffer,
Size,
&AuthenticationStatus
);
}
if (EFI_ERROR (Status) &&
((SectionType == EFI_SECTION_TE) || (SectionType == EFI_SECTION_PE32))) {
//
// Try reading raw file, since the desired section does not exist
//
*Buffer = NULL;
*Size = 0;
Status = Fv->ReadFile (
Fv,
NameGuid,
Buffer,
Size,
&FileType,
&Attributes,
&AuthenticationStatus
);
}
return Status;
}
/**
Allocate and fill a buffer with an image identified by a Firmware File GUID name and a Firmware Section type.
The Firmware Volumes to search for the Firmware File can be specified to be either all Firmware Volumes
in the system, or the Firmware Volume which contains the Firmware File specified by an image handle.
If ImageHandle is NULL, all Firmware Volumes in the system will be searched. If ImageHandle is not NULL,
ImageHandle is interpreted as EFI_PEI_FILE_HANDLE for the implementation of this function for PEI phase.
The input parameter ImageHandle is interpreted as EFI_HANDLE, on which an EFI_LOADED_IMAGE_PROTOCOL
is installed, for the implementation of this function for DXE phase. The search always starts from the FV
identified by ImageHandle. If WithinImageFv is TRUE, search will only be performed on the first FV. If WithinImageFv
is FALSE, search will continue on other FVs if it fails on the first FV. The search order of Firmware Volumes is
deterministic but arbitrary if no new firmware volume is added into the system between each search.
The search order for the section type specified by SectionType in the Firmware File is using a depth-first
and left-to-right algorithm through all sections. The first section found to match SectionType will be returned.
If SectionType is EFI_SECTION_PE32, EFI_SECTION_PE32 will be used as Firmware Section type
to read Firmware Section data from the Firmware File. If no such section exists, the function will try
to read a Firmware File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned.
If SectionType is EFI_SECTION_TE, EFI_SECTION_TE will be used as Firmware Section type to read Firmware Section
data from the Firmware File. If no such section exists, EFI_SECTION_PE32 will be used as Firmware Section type to
read Firmware Section data from the Firmware File. If no such section exists, the function will try to read a Firmware
File named with NameGuid. If no such file exists, EFI_NOT_FOUND is returned.
The data and size is returned by Buffer and Size. The caller is responsible to free the Buffer allocated
by this function. This function can only be called at TPL_NOTIFY and below.
If ImageHandle is NULL and WithinImage is TRUE, then ASSERT ();
If NameGuid is NULL, then ASSERT();
If Buffer is NULL, then ASSERT();
If Size is NULL, then ASSERT().
@param NameGuid The GUID name of a Firmware File.
@param SectionType The Firmware Section type.
@param Buffer On output, Buffer contains the the data read from the section in the Firmware File found.
@param Size On output, the size of Buffer.
@retval EFI_SUCCESS The image is found and data and size is returned.
@retval EFI_NOT_FOUND The image specified by NameGuid and SectionType can't be found.
@retval EFI_OUT_OF_RESOURCES There were not enough resources to allocate the output data buffer or complete the operations.
@retval EFI_DEVICE_ERROR A hardware error occurs during reading from the Firmware Volume.
@retval EFI_ACCESS_DENIED The firmware volume containing the searched Firmware File is configured to disallow reads.
**/
EFI_STATUS
EFIAPI
GetSectionFromFvFile (
IN CONST VOID *ImageHandle,
IN CONST EFI_GUID *NameGuid,
IN EFI_SECTION_TYPE SectionType,
OUT VOID **Buffer,
OUT UINTN *Size,
IN BOOLEAN WithinImageFv
)
{
EFI_STATUS Status;
EFI_HANDLE *HandleBuffer;
UINTN HandleCount;
UINTN Index;
EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
EFI_FIRMWARE_VOLUME2_PROTOCOL *ImageFv;
EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv;
ASSERT (NameGuid != NULL);
ASSERT (Buffer != NULL);
ASSERT (Size != NULL);
ASSERT (!(ImageHandle == NULL && WithinImageFv));
Status = EFI_NOT_FOUND;
ImageFv = NULL;
if (ImageHandle != NULL) {
Status = gBS->HandleProtocol (
(EFI_HANDLE *) ImageHandle,
&gEfiLoadedImageProtocolGuid,
(VOID **) &LoadedImage
);
if (EFI_ERROR (Status)) {
return Status;
}
Status = gBS->HandleProtocol (
LoadedImage->DeviceHandle,
&gEfiFirmwareVolume2ProtocolGuid,
(VOID **) &ImageFv
);
if (!EFI_ERROR (Status)) {
Status = GetImageFromFv (ImageFv, NameGuid, SectionType, Buffer, Size);
}
}
if (Status == EFI_SUCCESS || WithinImageFv) {
return Status;
}
HandleBuffer = NULL;
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gEfiFirmwareVolume2ProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
if (EFI_ERROR (Status)) {
goto Done;
}
//
// Find desired image in all Fvs
//
for (Index = 0; Index < HandleCount; ++Index) {
Status = gBS->HandleProtocol (
HandleBuffer[Index],
&gEfiFirmwareVolume2ProtocolGuid,
(VOID**)&Fv
);
if (EFI_ERROR (Status)) {
goto Done;
}
if (ImageFv != NULL && Fv == ImageFv) {
continue;
}
Status = GetImageFromFv (Fv, NameGuid, SectionType, Buffer, Size);
if (!EFI_ERROR (Status)) {
goto Done;
}
}
//
// Not found image
//
if (Index == HandleCount) {
Status = EFI_NOT_FOUND;
}
Done:
if (HandleBuffer != NULL) {
FreePool(HandleBuffer);
}
return Status;
}

View File

@ -0,0 +1,46 @@
#/** @file
# Component description file library instance for PiLib for DXE 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 = DxePiLib
FILE_GUID = EE680C58-FFC0-4a5d-858F-66FF9C84BC9F
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
LIBRARY_CLASS = PiLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
#
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
#
[Sources.common]
DxePiLib.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
MemoryAllocationLib
DebugLib
[Protocols]
gEfiFirmwareVolume2ProtocolGuid # ALWAYS_CONSUMED

View File

@ -18,6 +18,7 @@
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
#include <Library/PeiServicesTablePointerLib.h> #include <Library/PeiServicesTablePointerLib.h>
#include <Library/PeiServicesLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
@ -44,14 +45,12 @@ InternalAllocatePages (
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PHYSICAL_ADDRESS Memory; EFI_PHYSICAL_ADDRESS Memory;
EFI_PEI_SERVICES **PeiServices;
if (Pages == 0) { if (Pages == 0) {
return NULL; return NULL;
} }
PeiServices = GetPeiServicesTablePointer (); Status = PeiServicesAllocatePages (MemoryType, Pages, &Memory);
Status = (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, &Memory);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
Memory = 0; Memory = 0;
} }
@ -353,12 +352,9 @@ AllocatePool (
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PEI_SERVICES **PeiServices;
VOID *Buffer; VOID *Buffer;
PeiServices = GetPeiServicesTablePointer (); Status = PeiServicesAllocatePool (AllocationSize, &Buffer);
Status = (*PeiServices)->AllocatePool (PeiServices, AllocationSize, &Buffer);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
Buffer = NULL; Buffer = NULL;
} }

View File

@ -43,4 +43,5 @@
DebugLib DebugLib
BaseMemoryLib BaseMemoryLib
PeiServicesTablePointerLib PeiServicesTablePointerLib
PeiServicesLib

View File

@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Ppi/Pcd.h> #include <Ppi/Pcd.h>
#include <Library/PeiServicesLib.h>
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/PeiServicesTablePointerLib.h> #include <Library/PeiServicesTablePointerLib.h>
@ -41,19 +42,8 @@ GetPcdPpiPtr (
{ {
EFI_STATUS Status; EFI_STATUS Status;
PCD_PPI *PcdPpi; PCD_PPI *PcdPpi;
EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer ();
Status = (**PeiServices).LocatePpi (
PeiServices,
&gPcdPpiGuid,
0,
NULL,
(VOID **)&PcdPpi
);
Status = PeiServicesLocatePpi (&gPcdPpiGuid, 0, NULL, (VOID **)&PcdPpi);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
return PcdPpi; return PcdPpi;

View File

@ -42,6 +42,7 @@
[LibraryClasses] [LibraryClasses]
BaseMemoryLib BaseMemoryLib
PeiServicesTablePointerLib PeiServicesTablePointerLib
PeiServicesLib
DebugLib DebugLib

View File

@ -34,12 +34,12 @@
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesInstallPpi ( PeiServicesInstallPpi (
IN EFI_PEI_PPI_DESCRIPTOR *PpiList IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->InstallPpi (PeiServices, PpiList); return (*PeiServices)->InstallPpi (PeiServices, PpiList);
} }
@ -61,13 +61,13 @@ PeiServicesInstallPpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesReInstallPpi ( PeiServicesReInstallPpi (
IN EFI_PEI_PPI_DESCRIPTOR *OldPpi, IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,
IN EFI_PEI_PPI_DESCRIPTOR *NewPpi IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->ReInstallPpi (PeiServices, OldPpi, NewPpi); return (*PeiServices)->ReInstallPpi (PeiServices, OldPpi, NewPpi);
} }
@ -87,15 +87,15 @@ PeiServicesReInstallPpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesLocatePpi ( PeiServicesLocatePpi (
IN EFI_GUID *Guid, IN CONST EFI_GUID *Guid,
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,
IN OUT VOID **Ppi IN OUT VOID **Ppi
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->LocatePpi (PeiServices, Guid, Instance, PpiDescriptor, Ppi); return (*PeiServices)->LocatePpi (PeiServices, Guid, Instance, PpiDescriptor, Ppi);
} }
@ -116,12 +116,12 @@ PeiServicesLocatePpi (
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
PeiServicesNotifyPpi ( PeiServicesNotifyPpi (
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->NotifyPpi (PeiServices, NotifyList); return (*PeiServices)->NotifyPpi (PeiServices, NotifyList);
} }
@ -140,9 +140,9 @@ PeiServicesGetBootMode (
IN OUT EFI_BOOT_MODE *BootMode IN OUT EFI_BOOT_MODE *BootMode
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->GetBootMode (PeiServices, BootMode); return (*PeiServices)->GetBootMode (PeiServices, BootMode);
} }
@ -160,9 +160,9 @@ PeiServicesSetBootMode (
IN EFI_BOOT_MODE BootMode IN EFI_BOOT_MODE BootMode
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->SetBootMode (PeiServices, BootMode); return (*PeiServices)->SetBootMode (PeiServices, BootMode);
} }
@ -181,9 +181,9 @@ PeiServicesGetHobList (
IN OUT VOID **HobList IN OUT VOID **HobList
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->GetHobList (PeiServices, HobList); return (*PeiServices)->GetHobList (PeiServices, HobList);
} }
@ -206,9 +206,9 @@ PeiServicesCreateHob (
IN OUT VOID **Hob IN OUT VOID **Hob
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->CreateHob (PeiServices, Type, Length, Hob); return (*PeiServices)->CreateHob (PeiServices, Type, Length, Hob);
} }
@ -228,13 +228,13 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindNextVolume ( PeiServicesFfsFindNextVolume (
IN UINTN Instance, IN UINTN Instance,
IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->FfsFindNextVolume (PeiServices, Instance, FwVolHeader); return (*PeiServices)->FfsFindNextVolume (PeiServices, Instance, VolumeHandle);
} }
/** /**
@ -254,14 +254,14 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindNextFile ( PeiServicesFfsFindNextFile (
IN EFI_FV_FILETYPE SearchType, IN EFI_FV_FILETYPE SearchType,
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, IN EFI_PEI_FV_HANDLE VolumeHandle,
IN OUT EFI_FFS_FILE_HEADER **FileHeader IN OUT EFI_PEI_FILE_HANDLE *FileHandle
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->FfsFindNextFile (PeiServices, SearchType, FwVolHeader, FileHeader); return (*PeiServices)->FfsFindNextFile (PeiServices, SearchType, VolumeHandle, FileHandle);
} }
/** /**
@ -280,13 +280,13 @@ EFI_STATUS
EFIAPI EFIAPI
PeiServicesFfsFindSectionData ( PeiServicesFfsFindSectionData (
IN EFI_SECTION_TYPE SectionType, IN EFI_SECTION_TYPE SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN EFI_PEI_FILE_HANDLE FfsFileHeader,
IN OUT VOID **SectionData IN OUT VOID **SectionData
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->FfsFindSectionData (PeiServices, SectionType, FfsFileHeader, SectionData); return (*PeiServices)->FfsFindSectionData (PeiServices, SectionType, FfsFileHeader, SectionData);
} }
@ -309,9 +309,9 @@ PeiServicesInstallPeiMemory (
IN UINT64 MemoryLength IN UINT64 MemoryLength
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->InstallPeiMemory (PeiServices, MemoryBegin, MemoryLength); return (*PeiServices)->InstallPeiMemory (PeiServices, MemoryBegin, MemoryLength);
} }
@ -337,9 +337,9 @@ PeiServicesAllocatePages (
IN OUT EFI_PHYSICAL_ADDRESS *Memory IN OUT EFI_PHYSICAL_ADDRESS *Memory
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory); return (*PeiServices)->AllocatePages (PeiServices, MemoryType, Pages, Memory);
} }
@ -361,9 +361,9 @@ PeiServicesAllocatePool (
OUT VOID **Buffer OUT VOID **Buffer
) )
{ {
EFI_PEI_SERVICES **PeiServices; CONST EFI_PEI_SERVICES **PeiServices;
PeiServices = GetPeiServicesTablePointer (); PeiServices = (CONST EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();
return (*PeiServices)->AllocatePool (PeiServices, Size, Buffer); return (*PeiServices)->AllocatePool (PeiServices, Size, Buffer);
} }

View File

@ -24,6 +24,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/SmbusLib.h> #include <Library/SmbusLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/PeiServicesTablePointerLib.h> #include <Library/PeiServicesTablePointerLib.h>
#include <Library/PeiServicesLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#define SMBUS_LIB_SLAVE_ADDRESS(SmBusAddress) (((SmBusAddress) >> 1) & 0x7f) #define SMBUS_LIB_SLAVE_ADDRESS(SmBusAddress) (((SmBusAddress) >> 1) & 0x7f)
@ -41,14 +42,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
This internal function retrieves Smbus PPI from PPI database. This internal function retrieves Smbus PPI from PPI database.
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation. @param VOID
@return The pointer to Smbus PPI. @return The pointer to Smbus PPI.
**/ **/
EFI_PEI_SMBUS2_PPI * EFI_PEI_SMBUS2_PPI *
InternalGetSmbusPpi ( InternalGetSmbusPpi (
EFI_PEI_SERVICES **PeiServices VOID
); );
/** /**

View File

@ -26,13 +26,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/ **/
EFI_PEI_SMBUS2_PPI * EFI_PEI_SMBUS2_PPI *
InternalGetSmbusPpi ( InternalGetSmbusPpi (
EFI_PEI_SERVICES **PeiServices VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_PEI_SMBUS2_PPI *SmbusPpi; EFI_PEI_SMBUS2_PPI *SmbusPpi;
Status = (*PeiServices)->LocatePpi (PeiServices, &gEfiPeiSmbus2PpiGuid, 0, NULL, (VOID **) &SmbusPpi); Status = PeiServicesLocatePpi (&gEfiPeiSmbus2PpiGuid, 0, NULL, (VOID **) &SmbusPpi);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
ASSERT (SmbusPpi != NULL); ASSERT (SmbusPpi != NULL);
@ -70,12 +70,10 @@ InternalSmBusExec (
) )
{ {
EFI_PEI_SMBUS2_PPI *SmbusPpi; EFI_PEI_SMBUS2_PPI *SmbusPpi;
EFI_PEI_SERVICES **PeiServices;
RETURN_STATUS ReturnStatus; RETURN_STATUS ReturnStatus;
EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress; EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress;
PeiServices = GetPeiServicesTablePointer (); SmbusPpi = InternalGetSmbusPpi ();
SmbusPpi = InternalGetSmbusPpi (PeiServices);
SmbusDeviceAddress.SmbusDeviceAddress = SMBUS_LIB_SLAVE_ADDRESS (SmBusAddress); SmbusDeviceAddress.SmbusDeviceAddress = SMBUS_LIB_SLAVE_ADDRESS (SmBusAddress);
ReturnStatus = SmbusPpi->Execute ( ReturnStatus = SmbusPpi->Execute (

View File

@ -42,6 +42,7 @@
[LibraryClasses] [LibraryClasses]
BaseMemoryLib BaseMemoryLib
PeiServicesTablePointerLib PeiServicesTablePointerLib
PeiServicesLib
DebugLib DebugLib
[Ppis] [Ppis]

View File

@ -46,13 +46,8 @@
PrintLib PrintLib
UefiBootServicesTableLib UefiBootServicesTableLib
[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel
[FixedPcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel

View File

@ -44,12 +44,8 @@
PrintLib PrintLib
UefiBootServicesTableLib UefiBootServicesTableLib
[Pcd.common]
[FixedPcd.common] gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel
gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel

View File

@ -1209,3 +1209,4 @@ FreeUnicodeStringTable (
return EFI_SUCCESS; return EFI_SUCCESS;
} }

View File

@ -67,9 +67,10 @@
gEfiDriverConfigurationProtocolGuid # SOMETIMES_CONSUMED gEfiDriverConfigurationProtocolGuid # SOMETIMES_CONSUMED
gEfiDriverDiagnosticsProtocolGuid # SOMETIMES_CONSUMED gEfiDriverDiagnosticsProtocolGuid # SOMETIMES_CONSUMED
gEfiDriverDiagnostics2ProtocolGuid # SOMETIMES_CONSUMED gEfiDriverDiagnostics2ProtocolGuid # SOMETIMES_CONSUMED
gEfiFirmwareVolume2ProtocolGuid # ALWAYS_CONSUMED
[FixedPcd.common] [Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize
[FeaturePcd.common] [FeaturePcd.common]

View File

@ -21,6 +21,9 @@
#include <Protocol/DriverConfiguration.h> #include <Protocol/DriverConfiguration.h>
#include <Protocol/DriverDiagnostics.h> #include <Protocol/DriverDiagnostics.h>
#include <Protocol/DriverDiagnostics2.h> #include <Protocol/DriverDiagnostics2.h>
#include <Protocol/FirmwareVolume2.h>
#include <Protocol/LoadedImage.h>
#include <Guid/EventGroup.h> #include <Guid/EventGroup.h>
#include <Guid/EventLegacyBios.h> #include <Guid/EventLegacyBios.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
@ -32,4 +35,5 @@
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Library/PrintLib.h> #include <Library/PrintLib.h>
#endif #endif

View File

@ -72,6 +72,7 @@
MdePkg/Library/PeiHobLib/PeiHobLib.inf MdePkg/Library/PeiHobLib/PeiHobLib.inf
MdePkg/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf MdePkg/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf
MdePkg/Library/DxePcdLib/DxePcdLib.inf MdePkg/Library/DxePcdLib/DxePcdLib.inf
MdePkg/Library/DxePiLib/DxePiLib.inf
MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
MdePkg/Library/DxeSmbusLib/DxeSmbusLib.inf MdePkg/Library/DxeSmbusLib/DxeSmbusLib.inf
MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf