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));
|
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/BaseMemoryLib.h>
|
||||||
#include <Library/TimerLib.h>
|
#include <Library/TimerLib.h>
|
||||||
#include <IndustryStandard/PeImage.h>
|
#include <IndustryStandard/PeImage.h>
|
||||||
|
#include <Library/PeiServicesTablePointerLib.h>
|
||||||
|
|
||||||
extern EFI_GUID gEfiPeiCorePrivateGuid;
|
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.
|
Transfers control to a function starting with a new stack.
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,13 @@ static EFI_PEI_SERVICES mPS = {
|
||||||
|
|
||||||
PeiReportStatusCode,
|
PeiReportStatusCode,
|
||||||
|
|
||||||
PeiResetSystem
|
PeiResetSystem,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
PeiRegisterForShadow
|
||||||
};
|
};
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
|
Loading…
Reference in New Issue