mirror of https://github.com/acidanthera/audk.git
[PI compatible enabling] Add PeiRegisterForShadow interface for PEI_SERVICE
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3743 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
3a63377f2b
commit
14e8823a34
|
@ -536,3 +536,43 @@ Returns:
|
|||
return BuildGuidDataHob (&gEfiPeiCorePrivateGuid, PrivateData, sizeof (PEI_CORE_INSTANCE));
|
||||
}
|
||||
|
||||
/**
|
||||
This routine enable a PEIM to register itself to shadow when PEI Foundation
|
||||
discovery permanent memory.
|
||||
|
||||
@param FileHandle File handle of a PEIM.
|
||||
|
||||
@retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself.
|
||||
@retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself.
|
||||
@retval EFI_SUCCESS Successfully to register itself.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiRegisterForShadow (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle
|
||||
)
|
||||
{
|
||||
PEI_CORE_INSTANCE *Private;
|
||||
Private = PEI_CORE_INSTANCE_FROM_PS_THIS (GetPeiServicesTablePointer ());
|
||||
|
||||
if (Private->CurrentFileHandle != FileHandle) {
|
||||
//
|
||||
// The FileHandle must be for the current PEIM
|
||||
//
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
if (Private->Fv[Private->CurrentPeimFvCount].PeimState[Private->CurrentPeimCount] >= PEIM_STATE_REGISITER_FOR_SHADOW) {
|
||||
//
|
||||
// If the PEIM has already entered the PEIM_STATE_REGISTER_FOR_SHADOW or PEIM_STATE_DONE then it's already been started
|
||||
//
|
||||
return EFI_ALREADY_STARTED;
|
||||
}
|
||||
|
||||
Private->Fv[Private->CurrentPeimFvCount].PeimState[Private->CurrentPeimCount] = PEIM_STATE_REGISITER_FOR_SHADOW;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ Revision History
|
|||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <IndustryStandard/PeImage.h>
|
||||
#include <Library/PeiServicesTablePointerLib.h>
|
||||
|
||||
extern EFI_GUID gEfiPeiCorePrivateGuid;
|
||||
|
||||
|
@ -1161,6 +1162,24 @@ Returns:
|
|||
--*/
|
||||
;
|
||||
|
||||
/**
|
||||
This routine enable a PEIM to register itself to shadow when PEI Foundation
|
||||
discovery permanent memory.
|
||||
|
||||
@param FileHandle File handle of a PEIM.
|
||||
|
||||
@retval EFI_NOT_FOUND The file handle doesn't point to PEIM itself.
|
||||
@retval EFI_ALREADY_STARTED Indicate that the PEIM has been registered itself.
|
||||
@retval EFI_SUCCESS Successfully to register itself.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiRegisterForShadow (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Transfers control to a function starting with a new stack.
|
||||
|
||||
|
|
|
@ -69,7 +69,13 @@ static EFI_PEI_SERVICES mPS = {
|
|||
|
||||
PeiReportStatusCode,
|
||||
|
||||
PeiResetSystem
|
||||
PeiResetSystem,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
PeiRegisterForShadow
|
||||
};
|
||||
|
||||
EFI_STATUS
|
||||
|
|
Loading…
Reference in New Issue