PrmPkg: Apply uncrustify changes

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in PrmPkg.

Cc: Andrew Fish <afish@apple.com>
Cc: Kang Gao <kang.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Benjamin You <benjamin.you@intel.com>
Cc: Liu Yun <yun.y.liu@intel.com>
Cc: Ankit Sinha <ankit.sinha@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
Acked-by: Leif Lindholm <quic_llindhol@quicinc.com>
Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
This commit is contained in:
Michael Kubacki 2022-03-15 14:46:34 -04:00 committed by mergify[bot]
parent f3c11224b5
commit a298a84478
40 changed files with 1501 additions and 1431 deletions

View File

@ -32,25 +32,25 @@
#include "PrmInfo.h"
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringPrmInfoHelpTokenId = STRING_TOKEN (STR_PRMINFO_HELP);
GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringPrmInfoHelpTokenId = STRING_TOKEN (STR_PRMINFO_HELP);
//
// This is the generated String package data for all .UNI files.
// This data array is ready to be used as input of HiiAddPackages() to
// create a packagelist (which contains Form packages, String packages, etc).
//
extern UINT8 PrmInfoStrings[];
extern UINT8 PrmInfoStrings[];
STATIC UINTN mPrmHandlerCount;
STATIC UINTN mPrmModuleCount;
STATIC UINTN mPrmHandlerCount;
STATIC UINTN mPrmModuleCount;
STATIC EFI_HII_HANDLE mPrmInfoHiiHandle;
STATIC LIST_ENTRY mPrmHandlerList;
STATIC EFI_HII_HANDLE mPrmInfoHiiHandle;
STATIC LIST_ENTRY mPrmHandlerList;
STATIC CONST SHELL_PARAM_ITEM mParamList[] = {
{L"-l", TypeFlag},
{L"-t", TypeValue},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM mParamList[] = {
{ L"-l", TypeFlag },
{ L"-t", TypeValue },
{ NULL, TypeMax }
};
/**
Frees all of the nodes in a linked list.
@ -61,12 +61,12 @@ STATIC CONST SHELL_PARAM_ITEM mParamList[] = {
VOID
EFIAPI
FreeList (
IN LIST_ENTRY *ListHead
IN LIST_ENTRY *ListHead
)
{
LIST_ENTRY *Link;
LIST_ENTRY *NextLink;
PRM_HANDLER_CONTEXT_LIST_ENTRY *ListEntry;
LIST_ENTRY *Link;
LIST_ENTRY *NextLink;
PRM_HANDLER_CONTEXT_LIST_ENTRY *ListEntry;
if (ListHead == NULL) {
return;
@ -75,7 +75,7 @@ FreeList (
Link = GetFirstNode (&mPrmHandlerList);
while (!IsNull (&mPrmHandlerList, Link)) {
ListEntry = CR (Link, PRM_HANDLER_CONTEXT_LIST_ENTRY, Link, PRM_HANDLER_CONTEXT_LIST_ENTRY_SIGNATURE);
NextLink = GetNextNode (&mPrmHandlerList, Link);
NextLink = GetNextNode (&mPrmHandlerList, Link);
RemoveEntryList (Link);
FreePool (ListEntry);
@ -96,12 +96,13 @@ CreateNewPrmHandlerListEntry (
VOID
)
{
PRM_HANDLER_CONTEXT_LIST_ENTRY *PrmHandlerContextListEntry;
PRM_HANDLER_CONTEXT_LIST_ENTRY *PrmHandlerContextListEntry;
PrmHandlerContextListEntry = AllocateZeroPool (sizeof (*PrmHandlerContextListEntry));
if (PrmHandlerContextListEntry == NULL) {
return NULL;
}
PrmHandlerContextListEntry->Signature = PRM_HANDLER_CONTEXT_LIST_ENTRY_SIGNATURE;
return PrmHandlerContextListEntry;
@ -118,14 +119,14 @@ PrintMmioRuntimeRangeInfo (
IN PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges
)
{
UINTN RuntimeMmioRangeCount;
UINTN RuntimeMmioRangeIndex;
UINTN RuntimeMmioRangeCount;
UINTN RuntimeMmioRangeIndex;
if (RuntimeMmioRanges == NULL) {
return;
}
RuntimeMmioRangeCount = (UINTN) RuntimeMmioRanges->Count;
RuntimeMmioRangeCount = (UINTN)RuntimeMmioRanges->Count;
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_RUNTIME_MMIO_COUNT), mPrmInfoHiiHandle, RuntimeMmioRangeCount);
for (RuntimeMmioRangeIndex = 0; RuntimeMmioRangeIndex < RuntimeMmioRangeCount; RuntimeMmioRangeIndex++) {
@ -154,25 +155,25 @@ PrintMmioRuntimeRangeInfo (
**/
VOID
GatherPrmHandlerInfo (
IN BOOLEAN PrintInformation
IN BOOLEAN PrintInformation
)
{
EFI_STATUS Status;
UINT16 MajorVersion;
UINT16 MinorVersion;
UINT16 HandlerCount;
UINTN HandlerIndex;
EFI_PHYSICAL_ADDRESS CurrentHandlerPhysicalAddress;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
PRM_HANDLER_CONTEXT CurrentHandlerContext;
EFI_GUID *CurrentModuleGuid;
EFI_IMAGE_EXPORT_DIRECTORY *CurrentImageExportDirectory;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *CurrentExportDescriptorStruct;
PRM_MODULE_CONTEXT_BUFFERS *CurrentModuleContextBuffers;
PRM_HANDLER_CONTEXT_LIST_ENTRY *CurrentHandlerContextListEntry;
PRM_MODULE_IMAGE_CONTEXT *CurrentPrmModuleImageContext;
PRM_RUNTIME_MMIO_RANGES *CurrentPrmModuleRuntimeMmioRanges;
EFI_STATUS Status;
UINT16 MajorVersion;
UINT16 MinorVersion;
UINT16 HandlerCount;
UINTN HandlerIndex;
EFI_PHYSICAL_ADDRESS CurrentHandlerPhysicalAddress;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
PRM_HANDLER_CONTEXT CurrentHandlerContext;
EFI_GUID *CurrentModuleGuid;
EFI_IMAGE_EXPORT_DIRECTORY *CurrentImageExportDirectory;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *CurrentExportDescriptorStruct;
PRM_MODULE_CONTEXT_BUFFERS *CurrentModuleContextBuffers;
PRM_HANDLER_CONTEXT_LIST_ENTRY *CurrentHandlerContextListEntry;
PRM_MODULE_IMAGE_CONTEXT *CurrentPrmModuleImageContext;
PRM_RUNTIME_MMIO_RANGES *CurrentPrmModuleRuntimeMmioRanges;
ASSERT (mPrmModuleCount <= mPrmHandlerCount);
@ -182,25 +183,25 @@ GatherPrmHandlerInfo (
// Iterate across all PRM modules discovered
for (
CurrentPrmModuleImageContext = NULL, Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext);
!EFI_ERROR (Status);
Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext)) {
CurrentImageAddress = CurrentPrmModuleImageContext->PeCoffImageContext.ImageAddress;
CurrentImageExportDirectory = CurrentPrmModuleImageContext->ExportDirectory;
CurrentPrmModuleImageContext = NULL, Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext);
!EFI_ERROR (Status);
Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext))
{
CurrentImageAddress = CurrentPrmModuleImageContext->PeCoffImageContext.ImageAddress;
CurrentImageExportDirectory = CurrentPrmModuleImageContext->ExportDirectory;
CurrentExportDescriptorStruct = CurrentPrmModuleImageContext->ExportDescriptor;
CurrentModuleGuid = &CurrentExportDescriptorStruct->Header.ModuleGuid;
HandlerCount = CurrentExportDescriptorStruct->Header.NumberPrmHandlers;
HandlerCount = CurrentExportDescriptorStruct->Header.NumberPrmHandlers;
MajorVersion = 0;
MinorVersion = 0;
Status = GetImageVersionInPeCoffImage (
(VOID *) (UINTN) CurrentImageAddress,
&CurrentPrmModuleImageContext->PeCoffImageContext,
&MajorVersion,
&MinorVersion
);
Status = GetImageVersionInPeCoffImage (
(VOID *)(UINTN)CurrentImageAddress,
&CurrentPrmModuleImageContext->PeCoffImageContext,
&MajorVersion,
&MinorVersion
);
ASSERT_EFI_ERROR (Status);
if (PrintInformation) {
@ -210,7 +211,7 @@ GatherPrmHandlerInfo (
NULL,
STRING_TOKEN (STR_PRMINFO_MODULE_NAME),
mPrmInfoHiiHandle,
(CHAR8 *) ((UINTN) CurrentImageAddress + CurrentImageExportDirectory->Name)
(CHAR8 *)((UINTN)CurrentImageAddress + CurrentImageExportDirectory->Name)
);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_MODULE_GUID), mPrmInfoHiiHandle, CurrentModuleGuid);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_MODULE_VERSION), mPrmInfoHiiHandle, MajorVersion, MinorVersion);
@ -218,13 +219,13 @@ GatherPrmHandlerInfo (
// It is currently valid for a PRM module not to use a context buffer
CurrentPrmModuleRuntimeMmioRanges = NULL;
Status = GetModuleContextBuffers (
ByModuleGuid,
CurrentModuleGuid,
(CONST PRM_MODULE_CONTEXT_BUFFERS **) &CurrentModuleContextBuffers
);
Status = GetModuleContextBuffers (
ByModuleGuid,
CurrentModuleGuid,
(CONST PRM_MODULE_CONTEXT_BUFFERS **)&CurrentModuleContextBuffers
);
ASSERT (!EFI_ERROR (Status) || Status == EFI_NOT_FOUND);
if (!EFI_ERROR (Status) && CurrentModuleContextBuffers != NULL) {
if (!EFI_ERROR (Status) && (CurrentModuleContextBuffers != NULL)) {
CurrentPrmModuleRuntimeMmioRanges = CurrentModuleContextBuffers->RuntimeMmioRanges;
}
@ -234,6 +235,7 @@ GatherPrmHandlerInfo (
} else {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_NO_MMIO_RANGES), mPrmInfoHiiHandle);
}
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_COUNT), mPrmInfoHiiHandle, HandlerCount);
}
@ -241,9 +243,9 @@ GatherPrmHandlerInfo (
for (HandlerIndex = 0; HandlerIndex < HandlerCount; HandlerIndex++) {
ZeroMem (&CurrentHandlerContext, sizeof (CurrentHandlerContext));
CurrentHandlerContext.ModuleName = (CHAR8 *) ((UINTN) CurrentImageAddress + CurrentImageExportDirectory->Name);
CurrentHandlerContext.Guid = &CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerGuid;
CurrentHandlerContext.Name = (CHAR8 *) CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerName;
CurrentHandlerContext.ModuleName = (CHAR8 *)((UINTN)CurrentImageAddress + CurrentImageExportDirectory->Name);
CurrentHandlerContext.Guid = &CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerGuid;
CurrentHandlerContext.Name = (CHAR8 *)CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerName;
if (PrintInformation) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_NAME), mPrmInfoHiiHandle, CurrentHandlerContext.Name);
@ -258,7 +260,7 @@ GatherPrmHandlerInfo (
);
ASSERT_EFI_ERROR (Status);
if (!EFI_ERROR (Status)) {
CurrentHandlerContext.Handler = (PRM_HANDLER *) (UINTN) CurrentHandlerPhysicalAddress;
CurrentHandlerContext.Handler = (PRM_HANDLER *)(UINTN)CurrentHandlerPhysicalAddress;
if (PrintInformation) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_PA), mPrmInfoHiiHandle, CurrentHandlerPhysicalAddress);
@ -272,7 +274,7 @@ GatherPrmHandlerInfo (
Status = GetContextBuffer (
CurrentHandlerContext.Guid,
CurrentModuleContextBuffers,
(CONST PRM_CONTEXT_BUFFER **) &CurrentContextBuffer
(CONST PRM_CONTEXT_BUFFER **)&CurrentContextBuffer
);
if (!EFI_ERROR (Status)) {
CurrentHandlerContext.StaticDataBuffer = CurrentContextBuffer->StaticDataBuffer;
@ -286,7 +288,7 @@ GatherPrmHandlerInfo (
NULL,
STRING_TOKEN (STR_PRMINFO_STATIC_DATA_BUFFER),
mPrmInfoHiiHandle,
(UINTN) CurrentHandlerContext.StaticDataBuffer
(UINTN)CurrentHandlerContext.StaticDataBuffer
);
} else {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
@ -324,19 +326,19 @@ GatherPrmHandlerInfo (
**/
EFI_STATUS
PopulateContextBuffer (
IN PRM_DATA_BUFFER *StaticDataBuffer OPTIONAL,
IN EFI_GUID *HandlerGuid,
IN PRM_CONTEXT_BUFFER *ContextBuffer
IN PRM_DATA_BUFFER *StaticDataBuffer OPTIONAL,
IN EFI_GUID *HandlerGuid,
IN PRM_CONTEXT_BUFFER *ContextBuffer
)
{
if (HandlerGuid == NULL || ContextBuffer == NULL) {
if ((HandlerGuid == NULL) || (ContextBuffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
ZeroMem (ContextBuffer, sizeof (*ContextBuffer));
ContextBuffer->Signature = PRM_CONTEXT_BUFFER_SIGNATURE;
ContextBuffer->Version = PRM_CONTEXT_BUFFER_INTERFACE_VERSION;
ContextBuffer->Version = PRM_CONTEXT_BUFFER_INTERFACE_VERSION;
CopyGuid (&ContextBuffer->HandlerGuid, HandlerGuid);
if (StaticDataBuffer != NULL) {
@ -354,7 +356,7 @@ PopulateContextBuffer (
**/
VOID
PrintExecutionTime (
IN UINT64 TimeInNanoSec
IN UINT64 TimeInNanoSec
)
{
UINT64 Sec;
@ -363,24 +365,24 @@ PrintExecutionTime (
UINT64 NanoSec;
UINT64 RemainingTime;
Sec = 0;
MilliSec = 0;
MicroSec = 0;
NanoSec = 0;
Sec = 0;
MilliSec = 0;
MicroSec = 0;
NanoSec = 0;
RemainingTime = TimeInNanoSec;
if (RemainingTime > ONE_SECOND) {
Sec = DivU64x32 (RemainingTime, ONE_SECOND);
if (RemainingTime > ONE_SECOND) {
Sec = DivU64x32 (RemainingTime, ONE_SECOND);
RemainingTime -= MultU64x32 (Sec, ONE_SECOND);
}
if (RemainingTime > ONE_MILLISECOND) {
MilliSec = DivU64x32 (RemainingTime, ONE_MILLISECOND);
MilliSec = DivU64x32 (RemainingTime, ONE_MILLISECOND);
RemainingTime -= MultU64x32 (MilliSec, ONE_MILLISECOND);
}
if (RemainingTime > ONE_MICROSECOND) {
MicroSec = DivU64x32 (RemainingTime, ONE_MICROSECOND);
MicroSec = DivU64x32 (RemainingTime, ONE_MICROSECOND);
RemainingTime -= MultU64x32 (MicroSec, ONE_MICROSECOND);
}
@ -412,20 +414,20 @@ PrintExecutionTime (
**/
EFI_STATUS
ExecutePrmHandlerByGuid (
IN EFI_GUID *HandlerGuid
IN EFI_GUID *HandlerGuid
)
{
EFI_STATUS Status;
BOOLEAN ExecuteAllHandlers;
BOOLEAN HandlerFound;
UINT64 StartTime;
UINT64 EndTime;
PRM_CONTEXT_BUFFER CurrentContextBuffer;
PRM_HANDLER_CONTEXT *HandlerContext;
PRM_HANDLER_CONTEXT_LIST_ENTRY *HandlerContextListEntry;
LIST_ENTRY *Link;
EFI_STATUS Status;
BOOLEAN ExecuteAllHandlers;
BOOLEAN HandlerFound;
UINT64 StartTime;
UINT64 EndTime;
PRM_CONTEXT_BUFFER CurrentContextBuffer;
PRM_HANDLER_CONTEXT *HandlerContext;
PRM_HANDLER_CONTEXT_LIST_ENTRY *HandlerContextListEntry;
LIST_ENTRY *Link;
Link = NULL;
Link = NULL;
HandlerFound = FALSE;
if (HandlerGuid == NULL) {
@ -439,14 +441,14 @@ ExecutePrmHandlerByGuid (
EFI_LIST_FOR_EACH (Link, &mPrmHandlerList) {
HandlerContextListEntry = CR (Link, PRM_HANDLER_CONTEXT_LIST_ENTRY, Link, PRM_HANDLER_CONTEXT_LIST_ENTRY_SIGNATURE);
HandlerContext = &HandlerContextListEntry->Context;
HandlerContext = &HandlerContextListEntry->Context;
if (!ExecuteAllHandlers && !CompareGuid (HandlerGuid, HandlerContext->Guid)) {
continue;
}
HandlerFound = TRUE;
Status = PopulateContextBuffer (HandlerContext->StaticDataBuffer, HandlerContext->Guid, &CurrentContextBuffer);
Status = PopulateContextBuffer (HandlerContext->StaticDataBuffer, HandlerContext->Guid, &CurrentContextBuffer);
if (!EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
ShellPrintHiiEx (
@ -461,10 +463,11 @@ ExecutePrmHandlerByGuid (
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_GUID), mPrmInfoHiiHandle, HandlerContext->Guid);
StartTime = 0;
EndTime = 0;
EndTime = 0;
if (PcdGetBool (PcdPrmInfoPrintHandlerExecutionTime)) {
StartTime = GetPerformanceCounter ();
}
Status = HandlerContext->Handler (NULL, &CurrentContextBuffer);
if (PcdGetBool (PcdPrmInfoPrintHandlerExecutionTime)) {
EndTime = GetPerformanceCounter ();
@ -477,11 +480,12 @@ ExecutePrmHandlerByGuid (
}
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_EXEC_TIME), mPrmInfoHiiHandle);
if (StartTime == 0 && EndTime == 0) {
if ((StartTime == 0) && (EndTime == 0)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_UNKNOWN), mPrmInfoHiiHandle);
} else {
PrintExecutionTime (GetTimeInNanoSecond (EndTime - StartTime));
}
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
} else {
@ -519,20 +523,20 @@ ParseParameterList (
VOID
)
{
EFI_STATUS Status;
EFI_STATUS ReturnStatus;
UINTN ArgumentCount;
EFI_GUID HandlerGuid;
BOOLEAN PrintHandlerInfo;
LIST_ENTRY *Package;
LIST_ENTRY *TempNode;
CHAR16 *ProblemParam;
CONST CHAR16 *HandlerGuidStr;
EFI_STATUS Status;
EFI_STATUS ReturnStatus;
UINTN ArgumentCount;
EFI_GUID HandlerGuid;
BOOLEAN PrintHandlerInfo;
LIST_ENTRY *Package;
LIST_ENTRY *TempNode;
CHAR16 *ProblemParam;
CONST CHAR16 *HandlerGuidStr;
HandlerGuidStr = NULL;
Package = NULL;
HandlerGuidStr = NULL;
Package = NULL;
PrintHandlerInfo = FALSE;
ReturnStatus = EFI_SUCCESS;
ReturnStatus = EFI_SUCCESS;
InitializeListHead (&mPrmHandlerList);
@ -541,7 +545,7 @@ ParseParameterList (
//
Status = ShellCommandLineParseEx (mParamList, &Package, &ProblemParam, FALSE, FALSE);
if (EFI_ERROR (Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_GEN_PROBLEM), mPrmInfoHiiHandle, APPLICATION_NAME, ProblemParam);
ReturnStatus = EFI_INVALID_PARAMETER;
FreePool (ProblemParam);
@ -561,10 +565,12 @@ ParseParameterList (
// Get argument count including flags
//
for (
ArgumentCount = 0, TempNode = Package;
GetNextNode (Package, TempNode) != Package;
ArgumentCount++, TempNode = GetNextNode (Package, TempNode)
);
ArgumentCount = 0, TempNode = Package;
GetNextNode (Package, TempNode) != Package;
ArgumentCount++, TempNode = GetNextNode (Package, TempNode)
)
{
}
if (ArgumentCount == 1) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_NO_ARG), mPrmInfoHiiHandle, APPLICATION_NAME);
@ -635,13 +641,14 @@ ParseParameterList (
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLERS_FOUND), mPrmInfoHiiHandle, mPrmHandlerCount);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_LINE_BREAK), mPrmInfoHiiHandle);
}
GatherPrmHandlerInfo (PrintHandlerInfo);
if (HandlerGuidStr != NULL) {
Status = ExecutePrmHandlerByGuid (&HandlerGuid);
if (Status == EFI_NOT_FOUND) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_NOT_FOUND), mPrmInfoHiiHandle, APPLICATION_NAME, HandlerGuid);
}
Status = ExecutePrmHandlerByGuid (&HandlerGuid);
if (Status == EFI_NOT_FOUND) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PRMINFO_HANDLER_NOT_FOUND), mPrmInfoHiiHandle, APPLICATION_NAME, HandlerGuid);
}
}
Done:
@ -667,12 +674,12 @@ Done:
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
EFI_STATUS Status;
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
//
// Retrieve the HII package list from ImageHandle
@ -680,7 +687,7 @@ UefiMain (
Status = gBS->OpenProtocol (
ImageHandle,
&gEfiHiiPackageListProtocolGuid,
(VOID **) &PackageList,
(VOID **)&PackageList,
ImageHandle,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL

View File

@ -14,24 +14,24 @@
#include <PrmDataBuffer.h>
#include <Uefi.h>
#define APPLICATION_NAME L"PrmInfo"
#define APPLICATION_NAME L"PrmInfo"
#define PRM_HANDLER_CONTEXT_LIST_ENTRY_SIGNATURE SIGNATURE_32('P','R','H','E')
#define PRM_HANDLER_CONTEXT_LIST_ENTRY_SIGNATURE SIGNATURE_32('P','R','H','E')
#pragma pack(push, 1)
typedef struct {
CHAR8 *Name;
EFI_GUID *Guid;
PRM_DATA_BUFFER *StaticDataBuffer;
CHAR8 *ModuleName;
PRM_HANDLER *Handler;
CHAR8 *Name;
EFI_GUID *Guid;
PRM_DATA_BUFFER *StaticDataBuffer;
CHAR8 *ModuleName;
PRM_HANDLER *Handler;
} PRM_HANDLER_CONTEXT;
typedef struct {
UINTN Signature;
LIST_ENTRY Link;
PRM_HANDLER_CONTEXT Context;
UINTN Signature;
LIST_ENTRY Link;
PRM_HANDLER_CONTEXT Context;
} PRM_HANDLER_CONTEXT_LIST_ENTRY;
#pragma pack(pop)
@ -42,8 +42,8 @@ typedef struct {
#define EFI_LIST_FOR_EACH(Entry, ListHead) \
for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink)
#define ONE_MICROSECOND (1000)
#define ONE_MILLISECOND (1000 * ONE_MICROSECOND)
#define ONE_SECOND (1000 * ONE_MILLISECOND)
#define ONE_MICROSECOND (1000)
#define ONE_MILLISECOND (1000 * ONE_MICROSECOND)
#define ONE_SECOND (1000 * ONE_MILLISECOND)
#endif

View File

@ -42,9 +42,9 @@ typedef enum {
**/
EFI_STATUS
FindContextBufferInModuleBuffers (
IN CONST EFI_GUID *HandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers,
OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer
IN CONST EFI_GUID *HandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers,
OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer
);
/**
@ -68,9 +68,9 @@ FindContextBufferInModuleBuffers (
**/
EFI_STATUS
GetModuleContextBuffers (
IN PRM_GUID_SEARCH_TYPE GuidSearchType,
IN CONST EFI_GUID *Guid,
OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers
IN PRM_GUID_SEARCH_TYPE GuidSearchType,
IN CONST EFI_GUID *Guid,
OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers
);
/**
@ -91,9 +91,9 @@ GetModuleContextBuffers (
**/
EFI_STATUS
GetContextBuffer (
IN CONST EFI_GUID *PrmHandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL,
OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer
IN CONST EFI_GUID *PrmHandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL,
OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer
);
#endif

View File

@ -28,7 +28,7 @@
EFI_STATUS
EFIAPI
GetNextPrmModuleEntry (
IN OUT PRM_MODULE_IMAGE_CONTEXT **ModuleImageContext
IN OUT PRM_MODULE_IMAGE_CONTEXT **ModuleImageContext
);
/**
@ -53,8 +53,8 @@ GetNextPrmModuleEntry (
EFI_STATUS
EFIAPI
DiscoverPrmModules (
OUT UINTN *ModuleCount OPTIONAL,
OUT UINTN *HandlerCount OPTIONAL
OUT UINTN *ModuleCount OPTIONAL,
OUT UINTN *HandlerCount OPTIONAL
);
#endif

View File

@ -34,9 +34,9 @@
**/
EFI_STATUS
GetPrmModuleExportDescriptorTable (
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT **ExportDescriptor
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT **ExportDescriptor
);
/**
@ -57,9 +57,9 @@ GetPrmModuleExportDescriptorTable (
**/
EFI_STATUS
GetExportDirectoryInPeCoffImage (
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT EFI_IMAGE_EXPORT_DIRECTORY **ImageExportDirectory
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT EFI_IMAGE_EXPORT_DIRECTORY **ImageExportDirectory
);
/**
@ -80,10 +80,10 @@ GetExportDirectoryInPeCoffImage (
**/
EFI_STATUS
GetImageVersionInPeCoffImage (
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT UINT16 *ImageMajorVersion,
OUT UINT16 *ImageMinorVersion
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT UINT16 *ImageMajorVersion,
OUT UINT16 *ImageMinorVersion
);
/**
@ -102,10 +102,10 @@ GetImageVersionInPeCoffImage (
**/
EFI_STATUS
GetExportEntryAddress (
IN CONST CHAR8 *ExportName,
IN EFI_PHYSICAL_ADDRESS ImageBaseAddress,
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
OUT EFI_PHYSICAL_ADDRESS *ExportPhysicalAddress
IN CONST CHAR8 *ExportName,
IN EFI_PHYSICAL_ADDRESS ImageBaseAddress,
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
OUT EFI_PHYSICAL_ADDRESS *ExportPhysicalAddress
);
#endif

View File

@ -13,16 +13,16 @@
#include <Uefi.h>
#include <PrmContextBuffer.h>
#if defined(_MSC_VER)
#define PRM_EXPORT_API __declspec(dllexport)
#if defined (_MSC_VER)
#define PRM_EXPORT_API __declspec(dllexport)
#else
#define PRM_EXPORT_API
#define PRM_EXPORT_API
#endif
#define PRM_HANDLER_NAME_MAXIMUM_LENGTH 128
#define PRM_HANDLER_NAME_MAXIMUM_LENGTH 128
#define PRM_STRING_(x) #x
#define PRM_STRING(x) PRM_STRING_(x)
#define PRM_STRING_(x) #x
#define PRM_STRING(x) PRM_STRING_(x)
/**
A Platform Runtime Mechanism (PRM) handler function.
@ -38,7 +38,7 @@
**/
typedef
EFI_STATUS
(EFIAPI PRM_HANDLER) (
(EFIAPI PRM_HANDLER)(
IN VOID *ParameterBuffer OPTIONAL,
IN PRM_CONTEXT_BUFFER *ContextBuffer OPTIONAL
);

View File

@ -27,8 +27,8 @@
// copy the ACPI parameter buffer address to the PRMT ACPI table.
//
typedef struct {
EFI_GUID HandlerGuid;
UINT64 AcpiParameterBufferAddress;
EFI_GUID HandlerGuid;
UINT64 AcpiParameterBufferAddress;
} ACPI_PARAMETER_BUFFER_DESCRIPTOR;
//
@ -45,22 +45,22 @@ typedef struct {
///
/// Signature of this interface.
///
UINT32 Signature;
UINT32 Signature;
///
/// Version of this interface.
///
UINT16 Version;
UINT16 Version;
///
/// Reserved field.
///
UINT16 Reserved;
UINT16 Reserved;
///
/// The GUID of the PRM handler represented by this context instance.
///
EFI_GUID HandlerGuid;
EFI_GUID HandlerGuid;
///
/// A virtual address pointer to the static data buffer allocated for
@ -71,7 +71,7 @@ typedef struct {
///
/// This pointer may be NULL if a static data buffer is not needed.
///
PRM_DATA_BUFFER *StaticDataBuffer;
PRM_DATA_BUFFER *StaticDataBuffer;
///
/// A virtual address pointer to an array of PRM_RUNTIME_MMIO_RANGE
@ -91,30 +91,29 @@ typedef struct {
///
/// This pointer may be NULL if runtime memory ranges are not needed.
///
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
} PRM_CONTEXT_BUFFER;
//
// A firmware internal data structure used to track context buffer and
// runtime MMIO range usage across a PRM module.
//
typedef struct
{
typedef struct {
///
/// The GUID of the PRM module.
///
EFI_GUID ModuleGuid;
EFI_GUID ModuleGuid;
///
/// The number of PRM context buffers in ContextBuffers[].
/// This count should equal the number of PRM handlers in the module being configured.
///
UINTN BufferCount;
UINTN BufferCount;
///
/// A pointer to an array of PRM context buffers
///
PRM_CONTEXT_BUFFER *Buffer;
PRM_CONTEXT_BUFFER *Buffer;
/// The MMIO ranges are defined in the firmware boot environment.
/// The addresses within the PRM_RUNTIME_MMIO_RANGES structure will
@ -135,13 +134,13 @@ typedef struct
///
/// This pointer may be NULL if runtime memory ranges are not needed.
///
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
///
/// The number of ACPI parameter buffer descriptors in the array
/// AcpiParameterBufferDescriptors
///
UINTN AcpiParameterBufferDescriptorCount;
UINTN AcpiParameterBufferDescriptorCount;
///
/// A pointer to an array of ACPI parameter buffer descriptors. PRM module
@ -164,7 +163,7 @@ typedef struct
/// for each PRM handler that actually uses an ACPI parameter buffer. If
/// no handlers use an ACPI parameter buffer this pointer should be NULL.
///
ACPI_PARAMETER_BUFFER_DESCRIPTOR *AcpiParameterBufferDescriptors;
ACPI_PARAMETER_BUFFER_DESCRIPTOR *AcpiParameterBufferDescriptors;
} PRM_MODULE_CONTEXT_BUFFERS;
#pragma pack(pop)

View File

@ -12,7 +12,7 @@
#include <Uefi.h>
#define PRM_DATA_BUFFER_HEADER_SIGNATURE SIGNATURE_32('P','R','M','D')
#define PRM_DATA_BUFFER_HEADER_SIGNATURE SIGNATURE_32('P','R','M','D')
#pragma pack(push, 1)
@ -23,11 +23,11 @@ typedef struct {
///
/// PRM Data Buffer signature.
///
UINT32 Signature;
UINT32 Signature;
///
/// Length of the entire data buffer, including the size of the header.
///
UINT32 Length;
UINT32 Length;
} PRM_DATA_BUFFER_HEADER;
///
@ -37,12 +37,12 @@ typedef struct {
///
/// The header is required at the beginning of every PRM data buffer.
///
PRM_DATA_BUFFER_HEADER Header;
PRM_DATA_BUFFER_HEADER Header;
///
/// The beginning of data immediately follows the header.
///
UINT8 Data[1];
UINT8 Data[1];
} PRM_DATA_BUFFER;
#pragma pack(pop)

View File

@ -12,9 +12,9 @@
#include <Prm.h>
#define PRM_MODULE_EXPORT_DESCRIPTOR_NAME PrmModuleExportDescriptor
#define PRM_MODULE_EXPORT_DESCRIPTOR_SIGNATURE SIGNATURE_64 ('P', 'R', 'M', '_', 'M', 'E', 'D', 'T')
#define PRM_MODULE_EXPORT_REVISION 0x0
#define PRM_MODULE_EXPORT_DESCRIPTOR_NAME PrmModuleExportDescriptor
#define PRM_MODULE_EXPORT_DESCRIPTOR_SIGNATURE SIGNATURE_64 ('P', 'R', 'M', '_', 'M', 'E', 'D', 'T')
#define PRM_MODULE_EXPORT_REVISION 0x0
//
// Platform Runtime Mechanism (PRM) Export Descriptor Structures
@ -22,30 +22,30 @@
#pragma pack(push, 1)
typedef struct {
GUID PrmHandlerGuid;
CHAR8 PrmHandlerName[PRM_HANDLER_NAME_MAXIMUM_LENGTH];
GUID PrmHandlerGuid;
CHAR8 PrmHandlerName[PRM_HANDLER_NAME_MAXIMUM_LENGTH];
} PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT;
typedef struct {
UINT64 Signature;
UINT16 Revision;
UINT16 NumberPrmHandlers;
GUID PlatformGuid;
GUID ModuleGuid;
UINT64 Signature;
UINT16 Revision;
UINT16 NumberPrmHandlers;
GUID PlatformGuid;
GUID ModuleGuid;
} PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER;
typedef struct {
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER Header;
PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT PrmHandlerExportDescriptors[1];
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT_HEADER Header;
PRM_HANDLER_EXPORT_DESCRIPTOR_STRUCT PrmHandlerExportDescriptors[1];
} PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT;
#pragma pack(pop)
#if defined(_MSC_VER)
#define PRM_PACKED_STRUCT(definition) \
#if defined (_MSC_VER)
#define PRM_PACKED_STRUCT(definition) \
__pragma(pack(push, 1)) typedef struct definition __pragma(pack(pop))
#elif defined (__GNUC__) || defined (__clang__)
#define PRM_PACKED_STRUCT(definition) \
#define PRM_PACKED_STRUCT(definition) \
typedef struct __attribute__((packed)) definition
#endif
@ -67,6 +67,7 @@ typedef struct {
PRM_STRING_(Name) \
} \
/**
A macro that returns the count of the number of variable-length arguments given.

View File

@ -20,9 +20,9 @@
/// The memory range with the given base address and length will be marked as EFI_MEMORY_RUNTIME.
///
typedef struct {
EFI_PHYSICAL_ADDRESS PhysicalBaseAddress;
EFI_PHYSICAL_ADDRESS VirtualBaseAddress;
UINT32 Length;
EFI_PHYSICAL_ADDRESS PhysicalBaseAddress;
EFI_PHYSICAL_ADDRESS VirtualBaseAddress;
UINT32 Length;
} PRM_RUNTIME_MMIO_RANGE;
///
@ -33,11 +33,11 @@ typedef struct {
///
/// The number of runtime memory range elements in this buffer.
///
UINT64 Count;
UINT64 Count;
///
/// The beginning of the runtime memory range data.
///
PRM_RUNTIME_MMIO_RANGE Range[1];
PRM_RUNTIME_MMIO_RANGE Range[1];
} PRM_RUNTIME_MMIO_RANGES;
#pragma pack(pop)

View File

@ -26,16 +26,16 @@
#define PRM_HANDLER_EXPORT(Name) \
STATIC_ASSERT (sizeof (PRM_STRING_(Name)) <= PRM_HANDLER_NAME_MAXIMUM_LENGTH, "The PRM handler exceeds the maximum allowed size of 128."); \
\
/** \
A Platform Runtime Mechanism (PRM) handler. \
\
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer \
@param[in] ContextBUffer A pointer to the PRM handler context buffer \
\
@retval EFI_STATUS The PRM handler executed successfully. \
@retval Others An error occurred in the PRM handler. \
\
**/ \
/** \
A Platform Runtime Mechanism (PRM) handler. \
\
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer \
@param[in] ContextBUffer A pointer to the PRM handler context buffer \
\
@retval EFI_STATUS The PRM handler executed successfully. \
@retval Others An error occurred in the PRM handler. \
\
**/ \
EFI_STATUS \
PRM_EXPORT_API \
EFIAPI \

View File

@ -18,9 +18,9 @@
#pragma pack(push, 1)
typedef struct {
PE_COFF_LOADER_IMAGE_CONTEXT PeCoffImageContext;
EFI_IMAGE_EXPORT_DIRECTORY *ExportDirectory;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *ExportDescriptor;
PE_COFF_LOADER_IMAGE_CONTEXT PeCoffImageContext;
EFI_IMAGE_EXPORT_DIRECTORY *ExportDirectory;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *ExportDescriptor;
} PRM_MODULE_IMAGE_CONTEXT;
#pragma pack(pop)

View File

@ -19,14 +19,13 @@
typedef struct _PRM_CONFIG_PROTOCOL PRM_CONFIG_PROTOCOL;
#define PRM_CONFIG_PROTOCOL_SIGNATURE SIGNATURE_32('P','M','C','P')
#define PRM_CONFIG_PROTOCOL_VERSION 1
#define PRM_CONFIG_PROTOCOL_SIGNATURE SIGNATURE_32('P','M','C','P')
#define PRM_CONFIG_PROTOCOL_VERSION 1
struct _PRM_CONFIG_PROTOCOL
{
PRM_MODULE_CONTEXT_BUFFERS ModuleContextBuffers;
struct _PRM_CONFIG_PROTOCOL {
PRM_MODULE_CONTEXT_BUFFERS ModuleContextBuffers;
};
extern EFI_GUID gPrmConfigProtocolGuid;
extern EFI_GUID gPrmConfigProtocolGuid;
#endif

View File

@ -14,7 +14,7 @@
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/PrmConfig.h>
#define _DBGMSGID_ "[PRMCONTEXTBUFFERLIB]"
#define _DBGMSGID_ "[PRMCONTEXTBUFFERLIB]"
/**
Finds a PRM context buffer for the given PRM handler GUID.
@ -33,16 +33,16 @@
**/
EFI_STATUS
FindContextBufferInModuleBuffers (
IN CONST EFI_GUID *HandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers,
OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer
IN CONST EFI_GUID *HandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers,
OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer
)
{
UINTN Index;
UINTN Index;
DEBUG ((DEBUG_INFO, " %a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (HandlerGuid == NULL || ModuleContextBuffers == NULL || ContextBuffer == NULL) {
if ((HandlerGuid == NULL) || (ModuleContextBuffers == NULL) || (ContextBuffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@ -77,23 +77,24 @@ FindContextBufferInModuleBuffers (
**/
EFI_STATUS
GetModuleContextBuffers (
IN PRM_GUID_SEARCH_TYPE GuidSearchType,
IN CONST EFI_GUID *Guid,
OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers
IN PRM_GUID_SEARCH_TYPE GuidSearchType,
IN CONST EFI_GUID *Guid,
OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers
)
{
EFI_STATUS Status;
UINTN HandleCount;
UINTN Index;
EFI_HANDLE *HandleBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
CONST PRM_CONTEXT_BUFFER *PrmContextBuffer;
EFI_STATUS Status;
UINTN HandleCount;
UINTN Index;
EFI_HANDLE *HandleBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
CONST PRM_CONTEXT_BUFFER *PrmContextBuffer;
DEBUG ((DEBUG_INFO, " %a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (Guid == NULL || PrmModuleContextBuffers == NULL) {
if ((Guid == NULL) || (PrmModuleContextBuffers == NULL)) {
return EFI_INVALID_PARAMETER;
}
*PrmModuleContextBuffers = NULL;
Status = gBS->LocateHandleBuffer (
@ -108,10 +109,10 @@ GetModuleContextBuffers (
Status = gBS->HandleProtocol (
HandleBuffer[Index],
&gPrmConfigProtocolGuid,
(VOID **) &PrmConfigProtocol
(VOID **)&PrmConfigProtocol
);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status) || PrmConfigProtocol == NULL) {
if (EFI_ERROR (Status) || (PrmConfigProtocol == NULL)) {
continue;
}
@ -167,19 +168,20 @@ GetModuleContextBuffers (
**/
EFI_STATUS
GetContextBuffer (
IN CONST EFI_GUID *PrmHandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL,
OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer
IN CONST EFI_GUID *PrmHandlerGuid,
IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL,
OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer
)
{
EFI_STATUS Status;
CONST PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
EFI_STATUS Status;
CONST PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
DEBUG ((DEBUG_INFO, " %a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (PrmHandlerGuid == NULL || PrmContextBuffer == NULL) {
if ((PrmHandlerGuid == NULL) || (PrmContextBuffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
*PrmContextBuffer = NULL;
if (PrmModuleContextBuffers == NULL) {
@ -190,6 +192,7 @@ GetContextBuffer (
} else {
ContextBuffers = PrmModuleContextBuffers;
}
Status = FindContextBufferInModuleBuffers (PrmHandlerGuid, ContextBuffers, PrmContextBuffer);
return Status;

View File

@ -27,69 +27,69 @@
#include <Library/UnitTestLib.h>
#include <Protocol/PrmConfig.h>
#define UNIT_TEST_NAME "PRM Context Buffer Library Unit Test"
#define UNIT_TEST_VERSION "0.1"
#define UNIT_TEST_NAME "PRM Context Buffer Library Unit Test"
#define UNIT_TEST_VERSION "0.1"
///=== TEST DATA ==================================================================================
/// === TEST DATA ==================================================================================
EFI_HANDLE mTestProtocolHandle;
//*----------------------------------------------------------------------------------*
//* Context Structures *
//*----------------------------------------------------------------------------------*
// *----------------------------------------------------------------------------------*
// * Context Structures *
// *----------------------------------------------------------------------------------*
typedef struct {
PRM_MODULE_CONTEXT_BUFFERS *InstallationStructure;
EFI_HANDLE Handle;
PRM_GUID_SEARCH_TYPE GuidSearchType;
EFI_GUID *Guid;
EFI_GUID *ExpectedModuleGuid;
EFI_STATUS ExpectedStatus;
PRM_MODULE_CONTEXT_BUFFERS *InstallationStructure;
EFI_HANDLE Handle;
PRM_GUID_SEARCH_TYPE GuidSearchType;
EFI_GUID *Guid;
EFI_GUID *ExpectedModuleGuid;
EFI_STATUS ExpectedStatus;
} PRM_CONTEXT_BUFFERS_TEST_CONTEXT;
typedef struct {
EFI_GUID *HandlerGuid;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER *ExpectedContextBuffer;
EFI_STATUS ExpectedStatus;
EFI_GUID *HandlerGuid;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER *ExpectedContextBuffer;
EFI_STATUS ExpectedStatus;
} PRM_CONTEXT_BUFFER_TEST_CONTEXT;
//*----------------------------------------------------------------------------------*
//* Test GUIDs *
//*----------------------------------------------------------------------------------*
// *----------------------------------------------------------------------------------*
// * Test GUIDs *
// *----------------------------------------------------------------------------------*
// {52960b90-2f3a-4917-b91a-ed5f599a8809}
#define HANDLER_TEST_GUID_1 {0x52960b90, 0x2f3a, 0x4917, { 0xb9, 0x1a, 0xed, 0x5f, 0x59, 0x9a, 0x88, 0x09 }}
EFI_GUID mHandlerTestGuid1 = HANDLER_TEST_GUID_1;
#define HANDLER_TEST_GUID_1 {0x52960b90, 0x2f3a, 0x4917, { 0xb9, 0x1a, 0xed, 0x5f, 0x59, 0x9a, 0x88, 0x09 }}
EFI_GUID mHandlerTestGuid1 = HANDLER_TEST_GUID_1;
// {9316a80d-06dc-417b-b21d-6b3c2ae4ed6f}
#define HANDLER_TEST_GUID_2 {0x9316a80d, 0x06dc, 0x417b, { 0xb2, 0x1d, 0x6b, 0x3c, 0x2a, 0xe4, 0xed, 0x6f }}
EFI_GUID mHandlerTestGuid2 = HANDLER_TEST_GUID_2;
#define HANDLER_TEST_GUID_2 {0x9316a80d, 0x06dc, 0x417b, { 0xb2, 0x1d, 0x6b, 0x3c, 0x2a, 0xe4, 0xed, 0x6f }}
EFI_GUID mHandlerTestGuid2 = HANDLER_TEST_GUID_2;
// {d32ac8ba-6cc6-456f-9ed9-9233fa310434}
#define HANDLER_TEST_GUID_3 {0xd32ac8ba, 0x6cc6, 0x456f, { 0x9e, 0xd9, 0x92, 0x33, 0xfa, 0x31, 0x04, 0x34 }}
EFI_GUID mHandlerTestGuid3 = HANDLER_TEST_GUID_3;
#define HANDLER_TEST_GUID_3 {0xd32ac8ba, 0x6cc6, 0x456f, { 0x9e, 0xd9, 0x92, 0x33, 0xfa, 0x31, 0x04, 0x34 }}
EFI_GUID mHandlerTestGuid3 = HANDLER_TEST_GUID_3;
// {faadaa95-070b-4a34-a919-18305dc07370}
#define MODULE_TEST_GUID_1 {0xfaadaa95, 0x070b, 0x4a34, { 0xa9, 0x19, 0x18, 0x30, 0x5d, 0xc0, 0x73, 0x70 }}
EFI_GUID mModuleTestGuid1 = MODULE_TEST_GUID_1;
#define MODULE_TEST_GUID_1 {0xfaadaa95, 0x070b, 0x4a34, { 0xa9, 0x19, 0x18, 0x30, 0x5d, 0xc0, 0x73, 0x70 }}
EFI_GUID mModuleTestGuid1 = MODULE_TEST_GUID_1;
// {0ea24584-731c-4863-9100-75780af509a7}
#define MODULE_TEST_GUID_2 {0x0ea24584, 0x731c, 0x4863, { 0x91, 0x00, 0x75, 0x78, 0x0a, 0xf5, 0x09, 0xa7 }}
EFI_GUID mModuleTestGuid2 = MODULE_TEST_GUID_2;
#define MODULE_TEST_GUID_2 {0x0ea24584, 0x731c, 0x4863, { 0x91, 0x00, 0x75, 0x78, 0x0a, 0xf5, 0x09, 0xa7 }}
EFI_GUID mModuleTestGuid2 = MODULE_TEST_GUID_2;
// {f456b7a1-82a6-4427-8486-87e3a602df43}
#define MODULE_TEST_GUID_3 {0xf456b7a1, 0x82a6, 0x4427, { 0x84, 0x86, 0x87, 0xe3, 0xa6, 0x02, 0xdf, 0x43 }}
EFI_GUID mModuleTestGuid3 = MODULE_TEST_GUID_3;
#define MODULE_TEST_GUID_3 {0xf456b7a1, 0x82a6, 0x4427, { 0x84, 0x86, 0x87, 0xe3, 0xa6, 0x02, 0xdf, 0x43 }}
EFI_GUID mModuleTestGuid3 = MODULE_TEST_GUID_3;
// {4a941a9c-9dcf-471b-94b5-d9e2d8c64a1b}
#define NEGATIVE_TEST_GUID {0x4a941a9c, 0x9dcf, 0x471b, {0x94, 0xb5, 0xd9, 0xe2, 0xd8, 0xc6, 0x4a, 0x1b }}
EFI_GUID mNegativeTestGuid = NEGATIVE_TEST_GUID;
#define NEGATIVE_TEST_GUID {0x4a941a9c, 0x9dcf, 0x471b, {0x94, 0xb5, 0xd9, 0xe2, 0xd8, 0xc6, 0x4a, 0x1b }}
EFI_GUID mNegativeTestGuid = NEGATIVE_TEST_GUID;
//*----------------------------------------------------------------------------------*
//* PRM Static Test Structures *
//*----------------------------------------------------------------------------------*
// *----------------------------------------------------------------------------------*
// * PRM Static Test Structures *
// *----------------------------------------------------------------------------------*
PRM_DATA_BUFFER mTestStaticDataBuffer1 = {
PRM_DATA_BUFFER mTestStaticDataBuffer1 = {
{
PRM_DATA_BUFFER_HEADER_SIGNATURE,
sizeof (PRM_DATA_BUFFER)
@ -97,7 +97,7 @@ PRM_DATA_BUFFER mTestStaticDataBuffer1 = {
// No data in the buffer (only a header)
};
PRM_CONTEXT_BUFFER mTestPrmContextBuffer1 = {
PRM_CONTEXT_BUFFER mTestPrmContextBuffer1 = {
PRM_CONTEXT_BUFFER_SIGNATURE, // Signature
PRM_CONTEXT_BUFFER_INTERFACE_VERSION, // Version
0, // Reserved
@ -105,7 +105,7 @@ PRM_CONTEXT_BUFFER mTestPrmContextBuffer1 = {
&mTestStaticDataBuffer1 // StaticDataBuffer
};
PRM_CONTEXT_BUFFER mTestPrmContextBuffer2[2] = {
PRM_CONTEXT_BUFFER mTestPrmContextBuffer2[2] = {
// Context buffer #1
{
PRM_CONTEXT_BUFFER_SIGNATURE, // Signature
@ -124,56 +124,55 @@ PRM_CONTEXT_BUFFER mTestPrmContextBuffer2[2] = {
}
};
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers1 = {
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers1 = {
MODULE_TEST_GUID_1,
1,
&mTestPrmContextBuffer1,
NULL
};
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers2 = {
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers2 = {
MODULE_TEST_GUID_2,
1,
&mTestPrmContextBuffer1,
NULL
};
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers3 = {
PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers3 = {
MODULE_TEST_GUID_3,
2,
&mTestPrmContextBuffer2[0],
NULL
};
// *----------------------------------------------------------------------------------*
// * Test Contexts *
// *----------------------------------------------------------------------------------*
//*----------------------------------------------------------------------------------*
//* Test Contexts *
//*----------------------------------------------------------------------------------*
//* Searches by module GUID *
// * Searches by module GUID *
// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
// + InstallationStructure | Handle | GuidSearchType | Guid | ExpectedModuleGuid | ExpectedStatus |
// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers00 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &mModuleTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers01 = { &mTestPrmModuleContextBuffers2, NULL, ByModuleGuid, &mModuleTestGuid2, &mModuleTestGuid2, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers02 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mModuleTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers03 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers04 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers00 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &mModuleTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers01 = { &mTestPrmModuleContextBuffers2, NULL, ByModuleGuid, &mModuleTestGuid2, &mModuleTestGuid2, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers02 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mModuleTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers03 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers04 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
//* Searches by handler GUID *
// * Searches by handler GUID *
// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
// + InstallationStructure | Handle | GuidSearchType | Guid | ExpectedModuleGuid | ExpectedStatus |
// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers05 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers06 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers07 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid2, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers08 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers09 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid1, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers10 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid2, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers11 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers12 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers05 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers06 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers07 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid2, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers08 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers09 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid1, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers10 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid2, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers11 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers12 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *mContextBuffersArray[] = {
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *mContextBuffersArray[] = {
&mContextBuffers00,
&mContextBuffers01,
&mContextBuffers02,
@ -192,14 +191,14 @@ PRM_CONTEXT_BUFFERS_TEST_CONTEXT *mContextBuffersArray[] = {
// +----------------------+----------------------------------+------------------------------------------+--------------------+
// + HandlerGuid | ContextBuffers | ExpectedContextBuffer | ExpectedStatus |
// +----------------------+----------------------------------+------------------------------------------+--------------------+
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer00 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers1, &mTestPrmContextBuffer1, EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer01 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers2, &mTestPrmContextBuffer1, EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer02 = { &mHandlerTestGuid2, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[0], EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer03 = { &mHandlerTestGuid3, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[1], EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer04 = { &mNegativeTestGuid, &mTestPrmModuleContextBuffers1, NULL, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer05 = { &gZeroGuid, &mTestPrmModuleContextBuffers3, NULL, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer00 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers1, &mTestPrmContextBuffer1, EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer01 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers2, &mTestPrmContextBuffer1, EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer02 = { &mHandlerTestGuid2, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[0], EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer03 = { &mHandlerTestGuid3, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[1], EFI_SUCCESS };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer04 = { &mNegativeTestGuid, &mTestPrmModuleContextBuffers1, NULL, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer05 = { &gZeroGuid, &mTestPrmModuleContextBuffers3, NULL, EFI_NOT_FOUND };
PRM_CONTEXT_BUFFER_TEST_CONTEXT *mContextBufferArray[] = {
PRM_CONTEXT_BUFFER_TEST_CONTEXT *mContextBufferArray[] = {
&mContextBuffer00,
&mContextBuffer01,
&mContextBuffer02,
@ -208,13 +207,13 @@ PRM_CONTEXT_BUFFER_TEST_CONTEXT *mContextBufferArray[] = {
&mContextBuffer05
};
///=== HELPER FUNCTIONS ===========================================================================
/// === HELPER FUNCTIONS ===========================================================================
// None
///=== TEST CASES =================================================================================
/// === TEST CASES =================================================================================
///===== BASIC SUITE ==================================================
/// ===== BASIC SUITE ==================================================
/**
Verifies that passing NULL arguments to all library functions fails with EFI_INVALID_PARAMETER.
@ -229,13 +228,13 @@ PRM_CONTEXT_BUFFER_TEST_CONTEXT *mContextBufferArray[] = {
UNIT_TEST_STATUS
EFIAPI
NullPointerArgumentsShouldFailGracefully (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_GUID Guid;
PRM_CONTEXT_BUFFER *ContextBufferPtr;
PRM_MODULE_CONTEXT_BUFFERS ModuleContextBuffers;
PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffersPtr;
EFI_GUID Guid;
PRM_CONTEXT_BUFFER *ContextBufferPtr;
PRM_MODULE_CONTEXT_BUFFERS ModuleContextBuffers;
PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffersPtr;
UT_ASSERT_EQUAL (FindContextBufferInModuleBuffers (NULL, NULL, NULL), EFI_INVALID_PARAMETER);
UT_ASSERT_EQUAL (FindContextBufferInModuleBuffers (NULL, &ModuleContextBuffers, &ContextBufferPtr), EFI_INVALID_PARAMETER);
@ -254,7 +253,7 @@ NullPointerArgumentsShouldFailGracefully (
return UNIT_TEST_PASSED;
}
///===== FUNCTIONAL CORRECTNESS SUITE ==================================================
/// ===== FUNCTIONAL CORRECTNESS SUITE ==================================================
/**
Functional Correctness pre-requisite function.
@ -275,16 +274,16 @@ STATIC
UNIT_TEST_STATUS
EFIAPI
InitializeFunctionalCorrectness (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_STATUS Status;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
EFI_STATUS Status;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
UT_ASSERT_NOT_NULL (Context);
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *) Context;
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
ModuleContextBuffers = TestContext->InstallationStructure;
PrmConfigProtocol = AllocateZeroPool (sizeof (*PrmConfigProtocol));
@ -294,14 +293,14 @@ InitializeFunctionalCorrectness (
CopyGuid (&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid, &ModuleContextBuffers->ModuleGuid);
PrmConfigProtocol->ModuleContextBuffers.BufferCount = ModuleContextBuffers->BufferCount;
PrmConfigProtocol->ModuleContextBuffers.Buffer = ModuleContextBuffers->Buffer;
PrmConfigProtocol->ModuleContextBuffers.Buffer = ModuleContextBuffers->Buffer;
Status = gBS->InstallProtocolInterface (
&TestContext->Handle,
&gPrmConfigProtocolGuid,
EFI_NATIVE_INTERFACE,
(VOID *) PrmConfigProtocol
);
&TestContext->Handle,
&gPrmConfigProtocolGuid,
EFI_NATIVE_INTERFACE,
(VOID *)PrmConfigProtocol
);
UT_ASSERT_NOT_EFI_ERROR (Status);
return UNIT_TEST_PASSED;
@ -326,20 +325,20 @@ STATIC
UNIT_TEST_STATUS
EFIAPI
DeInitializeFunctionalCorrectness (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_STATUS Status;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
EFI_STATUS Status;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
UT_ASSERT_NOT_NULL (Context);
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *) Context;
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
Status = gBS->HandleProtocol (
TestContext->Handle,
&gPrmConfigProtocolGuid,
(VOID **) &PrmConfigProtocol
(VOID **)&PrmConfigProtocol
);
UT_ASSERT_NOT_EFI_ERROR (Status);
@ -348,7 +347,7 @@ DeInitializeFunctionalCorrectness (
TestContext->Handle,
&gPrmConfigProtocolGuid,
PrmConfigProtocol
);
);
UT_ASSERT_NOT_EFI_ERROR (Status);
if (!EFI_ERROR (Status)) {
FreePool (PrmConfigProtocol);
@ -373,15 +372,15 @@ DeInitializeFunctionalCorrectness (
UNIT_TEST_STATUS
EFIAPI
VerifyGetModuleContextBuffers (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_STATUS Status;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
EFI_STATUS Status;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFERS_TEST_CONTEXT *TestContext;
ContextBuffers = NULL;
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *) Context;
TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
Status = GetModuleContextBuffers (TestContext->GuidSearchType, TestContext->Guid, &ContextBuffers);
UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
@ -393,7 +392,7 @@ VerifyGetModuleContextBuffers (
__FUNCTION__,
((TestContext->GuidSearchType == ByModuleGuid) ? "module" : "handler"),
TestContext->Guid,
(UINTN) ContextBuffers
(UINTN)ContextBuffers
);
}
@ -415,17 +414,17 @@ VerifyGetModuleContextBuffers (
UNIT_TEST_STATUS
EFIAPI
VerifyFindContextBufferInModuleBuffers (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *FoundContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER_TEST_CONTEXT *TestContext;
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *FoundContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER_TEST_CONTEXT *TestContext;
ContextBuffers = NULL;
ContextBuffers = NULL;
FoundContextBuffer = NULL;
TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *) Context;
TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *)Context;
Status = FindContextBufferInModuleBuffers (TestContext->HandlerGuid, TestContext->ContextBuffers, &FoundContextBuffer);
UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
@ -461,17 +460,17 @@ VerifyFindContextBufferInModuleBuffers (
UNIT_TEST_STATUS
EFIAPI
VerifyGetContextBuffer (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *FoundContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER_TEST_CONTEXT *TestContext;
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *FoundContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
PRM_CONTEXT_BUFFER_TEST_CONTEXT *TestContext;
ContextBuffers = NULL;
ContextBuffers = NULL;
FoundContextBuffer = NULL;
TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *) Context;
TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *)Context;
Status = GetContextBuffer (TestContext->HandlerGuid, TestContext->ContextBuffers, &FoundContextBuffer);
UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
@ -484,7 +483,7 @@ VerifyGetContextBuffer (
return UNIT_TEST_PASSED;
}
///=== TEST ENGINE ================================================================================
/// === TEST ENGINE ================================================================================
/**
Entry point for the PRM Context Buffer Library unit tests.
@ -496,7 +495,9 @@ VerifyGetContextBuffer (
@retval other Some error occurred when executing this entry point.
**/
int main ()
int
main (
)
{
EFI_STATUS Status;
UINTN Index;
@ -640,8 +641,7 @@ int main ()
Status = RunAllTestSuites (Framework);
EXIT:
if (Framework)
{
if (Framework) {
FreeUnitTestFramework (Framework);
}

View File

@ -23,7 +23,7 @@
#define _DBGMSGID_ "[PRMMODULEDISCOVERYLIB]"
LIST_ENTRY mPrmModuleList;
LIST_ENTRY mPrmModuleList;
/**
Gets the next PRM module discovered after the given PRM module.
@ -40,13 +40,13 @@ LIST_ENTRY mPrmModuleList;
EFI_STATUS
EFIAPI
GetNextPrmModuleEntry (
IN OUT PRM_MODULE_IMAGE_CONTEXT **ModuleImageContext
IN OUT PRM_MODULE_IMAGE_CONTEXT **ModuleImageContext
)
{
LIST_ENTRY *CurrentLink;
LIST_ENTRY *ForwardLink;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *CurrentListEntry;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ForwardListEntry;
LIST_ENTRY *CurrentLink;
LIST_ENTRY *ForwardLink;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *CurrentListEntry;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ForwardListEntry;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
@ -59,7 +59,7 @@ GetNextPrmModuleEntry (
} else {
CurrentListEntry = NULL;
CurrentListEntry = CR (*ModuleImageContext, PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY, Context, PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE);
if (CurrentListEntry == NULL || CurrentListEntry->Signature != PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE) {
if ((CurrentListEntry == NULL) || (CurrentListEntry->Signature != PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE)) {
return EFI_INVALID_PARAMETER;
}
@ -92,7 +92,7 @@ CreateNewPrmModuleImageContextListEntry (
VOID
)
{
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *PrmModuleImageContextListEntry;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *PrmModuleImageContextListEntry;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
@ -100,12 +100,13 @@ CreateNewPrmModuleImageContextListEntry (
if (PrmModuleImageContextListEntry == NULL) {
return NULL;
}
DEBUG ((
DEBUG_INFO,
" %a %a: Allocated PrmModuleImageContextListEntry at 0x%x of size 0x%x bytes.\n",
_DBGMSGID_,
__FUNCTION__,
(UINTN) PrmModuleImageContextListEntry,
(UINTN)PrmModuleImageContextListEntry,
sizeof (*PrmModuleImageContextListEntry)
));
@ -127,12 +128,12 @@ CreateNewPrmModuleImageContextListEntry (
BOOLEAN
EFIAPI
IsAddressInMmram (
IN EFI_PHYSICAL_ADDRESS Address,
IN EFI_MMRAM_DESCRIPTOR *MmramRanges,
IN UINTN MmramRangeCount
IN EFI_PHYSICAL_ADDRESS Address,
IN EFI_MMRAM_DESCRIPTOR *MmramRanges,
IN UINTN MmramRangeCount
)
{
UINTN Index;
UINTN Index;
for (Index = 0; Index < MmramRangeCount; Index++) {
if ((Address >= MmramRanges[Index].CpuStart) &&
@ -167,28 +168,28 @@ IsAddressInMmram (
EFI_STATUS
EFIAPI
DiscoverPrmModules (
OUT UINTN *ModuleCount OPTIONAL,
OUT UINTN *HandlerCount OPTIONAL
OUT UINTN *ModuleCount OPTIONAL,
OUT UINTN *HandlerCount OPTIONAL
)
{
EFI_STATUS Status;
PRM_MODULE_IMAGE_CONTEXT TempPrmModuleImageContext;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *PrmModuleImageContextListEntry;
EFI_LOADED_IMAGE_PROTOCOL *LoadedImageProtocol;
EFI_HANDLE *HandleBuffer;
UINTN HandleCount;
UINTN Index;
UINTN PrmHandlerCount;
UINTN PrmModuleCount;
EFI_MM_ACCESS_PROTOCOL *MmAccess;
UINTN Size;
EFI_MMRAM_DESCRIPTOR *MmramRanges;
UINTN MmramRangeCount;
EFI_STATUS Status;
PRM_MODULE_IMAGE_CONTEXT TempPrmModuleImageContext;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *PrmModuleImageContextListEntry;
EFI_LOADED_IMAGE_PROTOCOL *LoadedImageProtocol;
EFI_HANDLE *HandleBuffer;
UINTN HandleCount;
UINTN Index;
UINTN PrmHandlerCount;
UINTN PrmModuleCount;
EFI_MM_ACCESS_PROTOCOL *MmAccess;
UINTN Size;
EFI_MMRAM_DESCRIPTOR *MmramRanges;
UINTN MmramRangeCount;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
PrmHandlerCount = 0;
PrmModuleCount = 0;
PrmModuleCount = 0;
if (!IsListEmpty (&mPrmModuleList)) {
return EFI_ALREADY_STARTED;
@ -206,18 +207,18 @@ DiscoverPrmModules (
return EFI_NOT_FOUND;
}
MmramRanges = NULL;
MmramRanges = NULL;
MmramRangeCount = 0;
Status = gBS->LocateProtocol (
&gEfiMmAccessProtocolGuid,
NULL,
(VOID **)&MmAccess
);
Status = gBS->LocateProtocol (
&gEfiMmAccessProtocolGuid,
NULL,
(VOID **)&MmAccess
);
if (Status == EFI_SUCCESS) {
//
// Get MMRAM range information
//
Size = 0;
Size = 0;
Status = MmAccess->GetCapabilities (MmAccess, &Size, NULL);
if ((Status == EFI_BUFFER_TOO_SMALL) && (Size != 0)) {
MmramRanges = (EFI_MMRAM_DESCRIPTOR *)AllocatePool (Size);
@ -234,7 +235,7 @@ DiscoverPrmModules (
Status = gBS->HandleProtocol (
HandleBuffer[Index],
&gEfiLoadedImageProtocolGuid,
(VOID **) &LoadedImageProtocol
(VOID **)&LoadedImageProtocol
);
if (EFI_ERROR (Status)) {
continue;
@ -249,16 +250,17 @@ DiscoverPrmModules (
TempPrmModuleImageContext.PeCoffImageContext.ImageRead = PeCoffLoaderImageReadFromMemory;
Status = PeCoffLoaderGetImageInfo (&TempPrmModuleImageContext.PeCoffImageContext);
if (EFI_ERROR (Status) || TempPrmModuleImageContext.PeCoffImageContext.ImageError != IMAGE_ERROR_SUCCESS) {
if (EFI_ERROR (Status) || (TempPrmModuleImageContext.PeCoffImageContext.ImageError != IMAGE_ERROR_SUCCESS)) {
DEBUG ((
DEBUG_WARN,
"%a %a: ImageHandle 0x%016lx is not a valid PE/COFF image. It cannot be considered a PRM module.\n",
_DBGMSGID_,
__FUNCTION__,
(EFI_PHYSICAL_ADDRESS) (UINTN) LoadedImageProtocol->ImageBase
(EFI_PHYSICAL_ADDRESS)(UINTN)LoadedImageProtocol->ImageBase
));
continue;
}
if (TempPrmModuleImageContext.PeCoffImageContext.IsTeImage) {
// A PRM Module is not allowed to be a TE image
continue;
@ -276,13 +278,14 @@ DiscoverPrmModules (
// Attempt to find the PRM Module Export Descriptor in the export table
Status = GetPrmModuleExportDescriptorTable (
TempPrmModuleImageContext.ExportDirectory,
&TempPrmModuleImageContext.PeCoffImageContext,
&TempPrmModuleImageContext.ExportDescriptor
);
if (EFI_ERROR (Status) || TempPrmModuleImageContext.ExportDescriptor == NULL) {
TempPrmModuleImageContext.ExportDirectory,
&TempPrmModuleImageContext.PeCoffImageContext,
&TempPrmModuleImageContext.ExportDescriptor
);
if (EFI_ERROR (Status) || (TempPrmModuleImageContext.ExportDescriptor == NULL)) {
continue;
}
// A PRM Module Export Descriptor was successfully found, this is considered a PRM Module.
//
@ -292,6 +295,7 @@ DiscoverPrmModules (
if (PrmModuleImageContextListEntry == NULL) {
return EFI_OUT_OF_RESOURCES;
}
CopyMem (
&PrmModuleImageContextListEntry->Context,
&TempPrmModuleImageContext,
@ -306,6 +310,7 @@ DiscoverPrmModules (
if (HandlerCount != NULL) {
*HandlerCount = PrmHandlerCount;
}
if (ModuleCount != NULL) {
*ModuleCount = PrmModuleCount;
}
@ -331,13 +336,13 @@ DiscoverPrmModules (
EFI_STATUS
EFIAPI
PrmModuleDiscoveryLibDestructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
LIST_ENTRY *Link;
LIST_ENTRY *NextLink;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
LIST_ENTRY *Link;
LIST_ENTRY *NextLink;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
if (IsListEmpty (&mPrmModuleList)) {
return EFI_SUCCESS;
@ -346,7 +351,7 @@ PrmModuleDiscoveryLibDestructor (
Link = GetFirstNode (&mPrmModuleList);
while (!IsNull (&mPrmModuleList, Link)) {
ListEntry = CR (Link, PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY, Link, PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE);
NextLink = GetNextNode (&mPrmModuleList, Link);
NextLink = GetNextNode (&mPrmModuleList, Link);
RemoveEntryList (Link);
FreePool (ListEntry);
@ -371,8 +376,8 @@ PrmModuleDiscoveryLibDestructor (
EFI_STATUS
EFIAPI
PrmModuleDiscoveryLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
InitializeListHead (&mPrmModuleList);

View File

@ -12,14 +12,14 @@
#include <PrmModuleImageContext.h>
#define PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE SIGNATURE_32('P','R','M','E')
#define PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY_SIGNATURE SIGNATURE_32('P','R','M','E')
#pragma pack(push, 1)
typedef struct {
UINTN Signature;
LIST_ENTRY Link;
PRM_MODULE_IMAGE_CONTEXT Context;
UINTN Signature;
LIST_ENTRY Link;
PRM_MODULE_IMAGE_CONTEXT Context;
} PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY;
#pragma pack(pop)

View File

@ -24,12 +24,12 @@
#include "../PrmModuleDiscovery.h"
#define UNIT_TEST_NAME "PRM Module Discovery Library Unit Test"
#define UNIT_TEST_VERSION "0.1"
#define UNIT_TEST_NAME "PRM Module Discovery Library Unit Test"
#define UNIT_TEST_VERSION "0.1"
///=== TEST CASES =================================================================================
/// === TEST CASES =================================================================================
///===== CREATE NEW PRM MODULE IMAGE CONTEXT LIST ENTRY TESTS SUITE ==================================================
/// ===== CREATE NEW PRM MODULE IMAGE CONTEXT LIST ENTRY TESTS SUITE ==================================================
/**
Verifies that the buffer returned can be deallocated.
@ -44,10 +44,10 @@
UNIT_TEST_STATUS
EFIAPI
PrmModuleImageContextListEntryShouldDeallocate (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
ListEntry = CreateNewPrmModuleImageContextListEntry ();
@ -72,10 +72,10 @@ PrmModuleImageContextListEntryShouldDeallocate (
UNIT_TEST_STATUS
EFIAPI
PrmModuleImageContextListEntrySignatureShouldBeValid (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
ListEntry = CreateNewPrmModuleImageContextListEntry ();
@ -101,11 +101,11 @@ PrmModuleImageContextListEntrySignatureShouldBeValid (
UNIT_TEST_STATUS
EFIAPI
PrmModuleImageContextListEntryImageContextShouldBeZeroed (
IN UNIT_TEST_CONTEXT Context
IN UNIT_TEST_CONTEXT Context
)
{
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
PRM_MODULE_IMAGE_CONTEXT ImageContext;
PRM_MODULE_IMAGE_CONTEXT_LIST_ENTRY *ListEntry;
PRM_MODULE_IMAGE_CONTEXT ImageContext;
ListEntry = CreateNewPrmModuleImageContextListEntry ();
@ -119,7 +119,7 @@ PrmModuleImageContextListEntryImageContextShouldBeZeroed (
return UNIT_TEST_PASSED;
}
///=== TEST ENGINE ================================================================================
/// === TEST ENGINE ================================================================================
/**
Entry point for the PRM Context Buffer Library unit tests.
@ -131,7 +131,9 @@ PrmModuleImageContextListEntryImageContextShouldBeZeroed (
@retval other Some error occurred when executing this entry point.
**/
int main ()
int
main (
)
{
EFI_STATUS Status;
UNIT_TEST_FRAMEWORK_HANDLE Framework;
@ -200,8 +202,7 @@ int main ()
Status = RunAllTestSuites (Framework);
EXIT:
if (Framework)
{
if (Framework) {
FreeUnitTestFramework (Framework);
}

View File

@ -37,26 +37,27 @@
**/
EFI_STATUS
GetPrmModuleExportDescriptorTable (
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT **ExportDescriptor
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT **ExportDescriptor
)
{
UINTN Index;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
UINT16 PrmModuleExportDescriptorOrdinal;
CONST CHAR8 *CurrentExportName;
UINT16 *OrdinalTable;
UINT32 *ExportNamePointerTable;
UINT32 *ExportAddressTable;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *TempExportDescriptor;
UINTN Index;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
UINT16 PrmModuleExportDescriptorOrdinal;
CONST CHAR8 *CurrentExportName;
UINT16 *OrdinalTable;
UINT32 *ExportNamePointerTable;
UINT32 *ExportAddressTable;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *TempExportDescriptor;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (ImageExportDirectory == NULL ||
PeCoffLoaderImageContext == NULL ||
PeCoffLoaderImageContext->ImageAddress == 0 ||
ExportDescriptor == NULL) {
if ((ImageExportDirectory == NULL) ||
(PeCoffLoaderImageContext == NULL) ||
(PeCoffLoaderImageContext->ImageAddress == 0) ||
(ExportDescriptor == NULL))
{
return EFI_INVALID_PARAMETER;
}
@ -73,13 +74,13 @@ GetPrmModuleExportDescriptorTable (
//
// The export name pointer table and export ordinal table form two parallel arrays associated by index.
//
CurrentImageAddress = PeCoffLoaderImageContext->ImageAddress;
ExportAddressTable = (UINT32 *) ((UINTN) CurrentImageAddress + ImageExportDirectory->AddressOfFunctions);
ExportNamePointerTable = (UINT32 *) ((UINTN) CurrentImageAddress + ImageExportDirectory->AddressOfNames);
OrdinalTable = (UINT16 *) ((UINTN) CurrentImageAddress + ImageExportDirectory->AddressOfNameOrdinals);
CurrentImageAddress = PeCoffLoaderImageContext->ImageAddress;
ExportAddressTable = (UINT32 *)((UINTN)CurrentImageAddress + ImageExportDirectory->AddressOfFunctions);
ExportNamePointerTable = (UINT32 *)((UINTN)CurrentImageAddress + ImageExportDirectory->AddressOfNames);
OrdinalTable = (UINT16 *)((UINTN)CurrentImageAddress + ImageExportDirectory->AddressOfNameOrdinals);
for (Index = 0; Index < ImageExportDirectory->NumberOfNames; Index++) {
CurrentExportName = (CONST CHAR8 *) ((UINTN) CurrentImageAddress + ExportNamePointerTable[Index]);
CurrentExportName = (CONST CHAR8 *)((UINTN)CurrentImageAddress + ExportNamePointerTable[Index]);
DEBUG ((
DEBUG_INFO,
" %a %a: Export Name[0x%x] - %a.\n",
@ -89,11 +90,12 @@ GetPrmModuleExportDescriptorTable (
CurrentExportName
));
if (
AsciiStrnCmp (
PRM_STRING(PRM_MODULE_EXPORT_DESCRIPTOR_NAME),
CurrentExportName,
AsciiStrLen (PRM_STRING(PRM_MODULE_EXPORT_DESCRIPTOR_NAME))
) == 0) {
AsciiStrnCmp (
PRM_STRING (PRM_MODULE_EXPORT_DESCRIPTOR_NAME),
CurrentExportName,
AsciiStrLen (PRM_STRING (PRM_MODULE_EXPORT_DESCRIPTOR_NAME))
) == 0)
{
PrmModuleExportDescriptorOrdinal = OrdinalTable[Index];
DEBUG ((
DEBUG_INFO,
@ -106,19 +108,21 @@ GetPrmModuleExportDescriptorTable (
DEBUG ((DEBUG_ERROR, "%a %a: The PRM Module Export Descriptor ordinal value is invalid.\n", _DBGMSGID_, __FUNCTION__));
return EFI_NOT_FOUND;
}
TempExportDescriptor = (PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *) ((UINTN) CurrentImageAddress + ExportAddressTable[PrmModuleExportDescriptorOrdinal]);
TempExportDescriptor = (PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *)((UINTN)CurrentImageAddress + ExportAddressTable[PrmModuleExportDescriptorOrdinal]);
if (TempExportDescriptor->Header.Signature == PRM_MODULE_EXPORT_DESCRIPTOR_SIGNATURE) {
*ExportDescriptor = TempExportDescriptor;
DEBUG ((DEBUG_INFO, " %a %a: PRM Module Export Descriptor found at 0x%x.\n", _DBGMSGID_, __FUNCTION__, (UINTN) ExportDescriptor));
DEBUG ((DEBUG_INFO, " %a %a: PRM Module Export Descriptor found at 0x%x.\n", _DBGMSGID_, __FUNCTION__, (UINTN)ExportDescriptor));
} else {
DEBUG ((
DEBUG_INFO,
" %a %a: PRM Module Export Descriptor found at 0x%x but signature check failed.\n",
_DBGMSGID_,
__FUNCTION__,
(UINTN) TempExportDescriptor
(UINTN)TempExportDescriptor
));
}
DEBUG ((DEBUG_INFO, " %a %a: Exiting export iteration since export descriptor found.\n", _DBGMSGID_, __FUNCTION__));
return EFI_SUCCESS;
}
@ -145,18 +149,18 @@ GetPrmModuleExportDescriptorTable (
**/
EFI_STATUS
GetExportDirectoryInPeCoffImage (
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT EFI_IMAGE_EXPORT_DIRECTORY **ImageExportDirectory
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT EFI_IMAGE_EXPORT_DIRECTORY **ImageExportDirectory
)
{
UINT16 Magic;
UINT32 NumberOfRvaAndSizes;
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION OptionalHeaderPtrUnion;
EFI_IMAGE_DATA_DIRECTORY *DirectoryEntry;
EFI_IMAGE_EXPORT_DIRECTORY *ExportDirectory;
UINT16 Magic;
UINT32 NumberOfRvaAndSizes;
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION OptionalHeaderPtrUnion;
EFI_IMAGE_DATA_DIRECTORY *DirectoryEntry;
EFI_IMAGE_EXPORT_DIRECTORY *ExportDirectory;
if (Image == NULL || PeCoffLoaderImageContext == NULL || ImageExportDirectory == NULL) {
if ((Image == NULL) || (PeCoffLoaderImageContext == NULL) || (ImageExportDirectory == NULL)) {
return EFI_INVALID_PARAMETER;
}
@ -169,36 +173,36 @@ GetExportDirectoryInPeCoffImage (
// image with PE32 magic.
//
switch (PeCoffLoaderImageContext->Machine) {
case EFI_IMAGE_MACHINE_IA32:
//
// Assume PE32 image with IA32 Machine field.
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC;
break;
case EFI_IMAGE_MACHINE_X64:
case EFI_IMAGE_MACHINE_AARCH64:
//
// Assume PE32+ image with X64 Machine field
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
break;
default:
//
// For unknown Machine field, use Magic in optional header
//
DEBUG ((
DEBUG_WARN,
"%a %a: The machine type for this image is not valid for a PRM module.\n",
_DBGMSGID_,
__FUNCTION__
));
return EFI_UNSUPPORTED;
case EFI_IMAGE_MACHINE_IA32:
//
// Assume PE32 image with IA32 Machine field.
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC;
break;
case EFI_IMAGE_MACHINE_X64:
case EFI_IMAGE_MACHINE_AARCH64:
//
// Assume PE32+ image with X64 Machine field
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
break;
default:
//
// For unknown Machine field, use Magic in optional header
//
DEBUG ((
DEBUG_WARN,
"%a %a: The machine type for this image is not valid for a PRM module.\n",
_DBGMSGID_,
__FUNCTION__
));
return EFI_UNSUPPORTED;
}
OptionalHeaderPtrUnion.Pe32 = (EFI_IMAGE_NT_HEADERS32 *) (
(UINTN) Image +
PeCoffLoaderImageContext->PeCoffHeaderOffset
);
OptionalHeaderPtrUnion.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)(
(UINTN)Image +
PeCoffLoaderImageContext->PeCoffHeaderOffset
);
//
// Check the PE/COFF Header Signature. Determine if the image is valid and/or a TE image.
@ -213,43 +217,44 @@ GetExportDirectoryInPeCoffImage (
// Use the PE32 offset to get the Export Directory Entry
//
NumberOfRvaAndSizes = OptionalHeaderPtrUnion.Pe32->OptionalHeader.NumberOfRvaAndSizes;
DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *) &(OptionalHeaderPtrUnion.Pe32->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT]);
DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(OptionalHeaderPtrUnion.Pe32->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT]);
} else if (OptionalHeaderPtrUnion.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
//
// Use the PE32+ offset get the Export Directory Entry
//
NumberOfRvaAndSizes = OptionalHeaderPtrUnion.Pe32Plus->OptionalHeader.NumberOfRvaAndSizes;
DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *) &(OptionalHeaderPtrUnion.Pe32Plus->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT]);
DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)&(OptionalHeaderPtrUnion.Pe32Plus->OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT]);
} else {
return EFI_UNSUPPORTED;
}
if (NumberOfRvaAndSizes <= EFI_IMAGE_DIRECTORY_ENTRY_EXPORT || DirectoryEntry->VirtualAddress == 0) {
if ((NumberOfRvaAndSizes <= EFI_IMAGE_DIRECTORY_ENTRY_EXPORT) || (DirectoryEntry->VirtualAddress == 0)) {
//
// The export directory is not present
//
return EFI_NOT_FOUND;
} else if (((UINT32) (~0) - DirectoryEntry->VirtualAddress) < DirectoryEntry->Size) {
} else if (((UINT32)(~0) - DirectoryEntry->VirtualAddress) < DirectoryEntry->Size) {
//
// The directory address overflows
//
DEBUG ((DEBUG_ERROR, "%a %a: The export directory entry in this image results in overflow.\n", _DBGMSGID_, __FUNCTION__));
return EFI_UNSUPPORTED;
} else {
DEBUG ((DEBUG_INFO, "%a %a: Export Directory Entry found in the image at 0x%x.\n", _DBGMSGID_, __FUNCTION__, (UINTN) OptionalHeaderPtrUnion.Pe32));
DEBUG ((DEBUG_INFO, "%a %a: Export Directory Entry found in the image at 0x%x.\n", _DBGMSGID_, __FUNCTION__, (UINTN)OptionalHeaderPtrUnion.Pe32));
DEBUG ((DEBUG_INFO, " %a %a: Directory Entry Virtual Address = 0x%x.\n", _DBGMSGID_, __FUNCTION__, DirectoryEntry->VirtualAddress));
ExportDirectory = (EFI_IMAGE_EXPORT_DIRECTORY *) ((UINTN) Image + DirectoryEntry->VirtualAddress);
ExportDirectory = (EFI_IMAGE_EXPORT_DIRECTORY *)((UINTN)Image + DirectoryEntry->VirtualAddress);
DEBUG ((
DEBUG_INFO,
" %a %a: Export Directory Table found successfully at 0x%x. Name address = 0x%x. Name = %a.\n",
_DBGMSGID_,
__FUNCTION__,
(UINTN) ExportDirectory,
((UINTN) Image + ExportDirectory->Name),
(CHAR8 *) ((UINTN) Image + ExportDirectory->Name)
(UINTN)ExportDirectory,
((UINTN)Image + ExportDirectory->Name),
(CHAR8 *)((UINTN)Image + ExportDirectory->Name)
));
}
*ImageExportDirectory = ExportDirectory;
return EFI_SUCCESS;
@ -273,18 +278,18 @@ GetExportDirectoryInPeCoffImage (
**/
EFI_STATUS
GetImageVersionInPeCoffImage (
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT UINT16 *ImageMajorVersion,
OUT UINT16 *ImageMinorVersion
IN VOID *Image,
IN PE_COFF_LOADER_IMAGE_CONTEXT *PeCoffLoaderImageContext,
OUT UINT16 *ImageMajorVersion,
OUT UINT16 *ImageMinorVersion
)
{
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION OptionalHeaderPtrUnion;
UINT16 Magic;
EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION OptionalHeaderPtrUnion;
UINT16 Magic;
DEBUG ((DEBUG_INFO, " %a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (Image == NULL || PeCoffLoaderImageContext == NULL || ImageMajorVersion == NULL || ImageMinorVersion == NULL) {
if ((Image == NULL) || (PeCoffLoaderImageContext == NULL) || (ImageMajorVersion == NULL) || (ImageMinorVersion == NULL)) {
return EFI_INVALID_PARAMETER;
}
@ -294,36 +299,36 @@ GetImageVersionInPeCoffImage (
// image with PE32 magic.
//
switch (PeCoffLoaderImageContext->Machine) {
case EFI_IMAGE_MACHINE_IA32:
//
// Assume PE32 image
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC;
break;
case EFI_IMAGE_MACHINE_X64:
case EFI_IMAGE_MACHINE_AARCH64:
//
// Assume PE32+ image
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
break;
default:
//
// For unknown Machine field, use Magic in optional header
//
DEBUG ((
DEBUG_WARN,
"%a %a: The machine type for this image is not valid for a PRM module.\n",
_DBGMSGID_,
__FUNCTION__
));
return EFI_UNSUPPORTED;
case EFI_IMAGE_MACHINE_IA32:
//
// Assume PE32 image
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC;
break;
case EFI_IMAGE_MACHINE_X64:
case EFI_IMAGE_MACHINE_AARCH64:
//
// Assume PE32+ image
//
Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
break;
default:
//
// For unknown Machine field, use Magic in optional header
//
DEBUG ((
DEBUG_WARN,
"%a %a: The machine type for this image is not valid for a PRM module.\n",
_DBGMSGID_,
__FUNCTION__
));
return EFI_UNSUPPORTED;
}
OptionalHeaderPtrUnion.Pe32 = (EFI_IMAGE_NT_HEADERS32 *) (
(UINTN) Image +
PeCoffLoaderImageContext->PeCoffHeaderOffset
);
OptionalHeaderPtrUnion.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)(
(UINTN)Image +
PeCoffLoaderImageContext->PeCoffHeaderOffset
);
//
// Check the PE/COFF Header Signature. Determine if the image is valid and/or a TE image.
//
@ -368,30 +373,31 @@ GetImageVersionInPeCoffImage (
**/
EFI_STATUS
GetExportEntryAddress (
IN CONST CHAR8 *ExportName,
IN EFI_PHYSICAL_ADDRESS ImageBaseAddress,
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
OUT EFI_PHYSICAL_ADDRESS *ExportPhysicalAddress
IN CONST CHAR8 *ExportName,
IN EFI_PHYSICAL_ADDRESS ImageBaseAddress,
IN EFI_IMAGE_EXPORT_DIRECTORY *ImageExportDirectory,
OUT EFI_PHYSICAL_ADDRESS *ExportPhysicalAddress
)
{
UINTN ExportNameIndex;
UINT16 CurrentExportOrdinal;
UINT32 *ExportAddressTable;
UINT32 *ExportNamePointerTable;
UINT16 *OrdinalTable;
CONST CHAR8 *ExportNameTablePointerName;
UINTN ExportNameIndex;
UINT16 CurrentExportOrdinal;
UINT32 *ExportAddressTable;
UINT32 *ExportNamePointerTable;
UINT16 *OrdinalTable;
CONST CHAR8 *ExportNameTablePointerName;
if (ExportName == NULL || ImageBaseAddress == 0 || ImageExportDirectory == NULL || ExportPhysicalAddress == NULL) {
if ((ExportName == NULL) || (ImageBaseAddress == 0) || (ImageExportDirectory == NULL) || (ExportPhysicalAddress == NULL)) {
return EFI_INVALID_PARAMETER;
}
*ExportPhysicalAddress = 0;
ExportAddressTable = (UINT32 *) ((UINTN) ImageBaseAddress + ImageExportDirectory->AddressOfFunctions);
ExportNamePointerTable = (UINT32 *) ((UINTN) ImageBaseAddress + ImageExportDirectory->AddressOfNames);
OrdinalTable = (UINT16 *) ((UINTN) ImageBaseAddress + ImageExportDirectory->AddressOfNameOrdinals);
ExportAddressTable = (UINT32 *)((UINTN)ImageBaseAddress + ImageExportDirectory->AddressOfFunctions);
ExportNamePointerTable = (UINT32 *)((UINTN)ImageBaseAddress + ImageExportDirectory->AddressOfNames);
OrdinalTable = (UINT16 *)((UINTN)ImageBaseAddress + ImageExportDirectory->AddressOfNameOrdinals);
for (ExportNameIndex = 0; ExportNameIndex < ImageExportDirectory->NumberOfNames; ExportNameIndex++) {
ExportNameTablePointerName = (CONST CHAR8 *) ((UINTN) ImageBaseAddress + ExportNamePointerTable[ExportNameIndex]);
ExportNameTablePointerName = (CONST CHAR8 *)((UINTN)ImageBaseAddress + ExportNamePointerTable[ExportNameIndex]);
if (AsciiStrnCmp (ExportName, ExportNameTablePointerName, PRM_HANDLER_NAME_MAXIMUM_LENGTH) == 0) {
CurrentExportOrdinal = OrdinalTable[ExportNameIndex];
@ -402,7 +408,7 @@ GetExportEntryAddress (
break;
}
*ExportPhysicalAddress = (EFI_PHYSICAL_ADDRESS) ((UINTN) ImageBaseAddress + ExportAddressTable[CurrentExportOrdinal]);
*ExportPhysicalAddress = (EFI_PHYSICAL_ADDRESS)((UINTN)ImageBaseAddress + ExportAddressTable[CurrentExportOrdinal]);
return EFI_SUCCESS;
}
}

View File

@ -23,11 +23,11 @@
#include <PrmMmio.h>
#include <Protocol/PrmConfig.h>
#define _DBGMSGID_ "[PRMCONFIG]"
#define _DBGMSGID_ "[PRMCONFIG]"
STATIC UINTN mMaxRuntimeMmioRangeCount;
STATIC UINTN mMaxRuntimeMmioRangeCount;
GLOBAL_REMOVE_IF_UNREFERENCED STATIC PRM_RUNTIME_MMIO_RANGES **mRuntimeMmioRanges;
GLOBAL_REMOVE_IF_UNREFERENCED STATIC PRM_RUNTIME_MMIO_RANGES **mRuntimeMmioRanges;
/**
Converts the runtime memory range physical addresses to virtual addresses.
@ -37,18 +37,18 @@ GLOBAL_REMOVE_IF_UNREFERENCED STATIC PRM_RUNTIME_MMIO_RANGES **mRuntimeMmioRa
**/
VOID
ConvertRuntimeMemoryRangeAddresses (
IN PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges
IN PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges
)
{
UINTN Index;
UINTN Index;
if (RuntimeMmioRanges == NULL || RuntimeMmioRanges->Count == 0) {
if ((RuntimeMmioRanges == NULL) || (RuntimeMmioRanges->Count == 0)) {
return;
}
for (Index = 0; Index < (UINTN) RuntimeMmioRanges->Count; Index++) {
for (Index = 0; Index < (UINTN)RuntimeMmioRanges->Count; Index++) {
RuntimeMmioRanges->Range[Index].VirtualBaseAddress = RuntimeMmioRanges->Range[Index].PhysicalBaseAddress;
gRT->ConvertPointer (0x0, (VOID **) &(RuntimeMmioRanges->Range[Index].VirtualBaseAddress));
gRT->ConvertPointer (0x0, (VOID **)&(RuntimeMmioRanges->Range[Index].VirtualBaseAddress));
}
}
@ -63,23 +63,28 @@ ConvertRuntimeMemoryRangeAddresses (
**/
VOID
SetRuntimeMemoryRangeAttributes (
IN PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges
IN PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges
)
{
EFI_STATUS Status;
EFI_STATUS Status2;
UINTN Index;
EFI_GCD_MEMORY_SPACE_DESCRIPTOR Descriptor;
EFI_STATUS Status;
EFI_STATUS Status2;
UINTN Index;
EFI_GCD_MEMORY_SPACE_DESCRIPTOR Descriptor;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (RuntimeMmioRanges == NULL || RuntimeMmioRanges->Count == 0) {
if ((RuntimeMmioRanges == NULL) || (RuntimeMmioRanges->Count == 0)) {
return;
}
for (Index = 0; Index < (UINTN) RuntimeMmioRanges->Count; Index++) {
for (Index = 0; Index < (UINTN)RuntimeMmioRanges->Count; Index++) {
DEBUG ((
DEBUG_INFO, " %a %a: Runtime MMIO Range [%d].\n", _DBGMSGID_, __FUNCTION__, Index));
DEBUG_INFO,
" %a %a: Runtime MMIO Range [%d].\n",
_DBGMSGID_,
__FUNCTION__,
Index
));
DEBUG ((
DEBUG_INFO,
" %a %a: Physical address = 0x%016x. Length = 0x%x.\n",
@ -94,24 +99,25 @@ SetRuntimeMemoryRangeAttributes (
ASSERT ((RuntimeMmioRanges->Range[Index].Length & EFI_PAGE_MASK) == 0);
Status2 = EFI_NOT_FOUND;
Status = gDS->GetMemorySpaceDescriptor (RuntimeMmioRanges->Range[Index].PhysicalBaseAddress, &Descriptor);
Status = gDS->GetMemorySpaceDescriptor (RuntimeMmioRanges->Range[Index].PhysicalBaseAddress, &Descriptor);
if (!EFI_ERROR (Status) &&
(
(Descriptor.GcdMemoryType != EfiGcdMemoryTypeMemoryMappedIo && Descriptor.GcdMemoryType != EfiGcdMemoryTypeReserved) ||
((Descriptor.Length & EFI_PAGE_MASK) != 0)
(
((Descriptor.GcdMemoryType != EfiGcdMemoryTypeMemoryMappedIo) && (Descriptor.GcdMemoryType != EfiGcdMemoryTypeReserved)) ||
((Descriptor.Length & EFI_PAGE_MASK) != 0)
)
) {
)
{
Status2 = gDS->RemoveMemorySpace (
RuntimeMmioRanges->Range[Index].PhysicalBaseAddress,
Descriptor.Length
);
}
if (Status == EFI_NOT_FOUND || !EFI_ERROR (Status2)) {
if ((Status == EFI_NOT_FOUND) || !EFI_ERROR (Status2)) {
Status = gDS->AddMemorySpace (
EfiGcdMemoryTypeMemoryMappedIo,
RuntimeMmioRanges->Range[Index].PhysicalBaseAddress,
(UINT64) RuntimeMmioRanges->Range[Index].Length,
(UINT64)RuntimeMmioRanges->Range[Index].Length,
EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
);
ASSERT_EFI_ERROR (Status);
@ -120,7 +126,7 @@ SetRuntimeMemoryRangeAttributes (
EfiGcdAllocateAddress,
EfiGcdMemoryTypeMemoryMappedIo,
0,
(UINT64) RuntimeMmioRanges->Range[Index].Length,
(UINT64)RuntimeMmioRanges->Range[Index].Length,
&RuntimeMmioRanges->Range[Index].PhysicalBaseAddress,
gImageHandle,
NULL
@ -141,13 +147,14 @@ SetRuntimeMemoryRangeAttributes (
));
continue;
}
if ((Descriptor.Attributes & EFI_MEMORY_RUNTIME) != 0) {
continue;
}
Status = gDS->SetMemorySpaceAttributes (
RuntimeMmioRanges->Range[Index].PhysicalBaseAddress,
(UINT64) RuntimeMmioRanges->Range[Index].Length,
(UINT64)RuntimeMmioRanges->Range[Index].Length,
Descriptor.Attributes | EFI_MEMORY_RUNTIME
);
ASSERT_EFI_ERROR (Status);
@ -175,19 +182,19 @@ StoreVirtualMemoryAddressChangePointers (
VOID
)
{
EFI_STATUS Status;
UINTN HandleCount;
UINTN HandleIndex;
UINTN RangeIndex;
EFI_HANDLE *HandleBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
EFI_STATUS Status;
UINTN HandleCount;
UINTN HandleIndex;
UINTN RangeIndex;
EFI_HANDLE *HandleBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
RangeIndex = 0;
mRuntimeMmioRanges = AllocateRuntimeZeroPool (sizeof (*mRuntimeMmioRanges) * mMaxRuntimeMmioRangeCount);
if (mRuntimeMmioRanges == NULL && mMaxRuntimeMmioRangeCount > 0) {
if ((mRuntimeMmioRanges == NULL) && (mMaxRuntimeMmioRangeCount > 0)) {
DEBUG ((
DEBUG_ERROR,
" %a %a: Memory allocation for runtime MMIO pointer array failed.\n",
@ -199,22 +206,22 @@ StoreVirtualMemoryAddressChangePointers (
}
HandleBuffer = NULL;
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gPrmConfigProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gPrmConfigProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
if (!EFI_ERROR (Status)) {
for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) {
Status = gBS->HandleProtocol (
HandleBuffer[HandleIndex],
&gPrmConfigProtocolGuid,
(VOID **) &PrmConfigProtocol
(VOID **)&PrmConfigProtocol
);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status) || PrmConfigProtocol == NULL) {
if (EFI_ERROR (Status) || (PrmConfigProtocol == NULL)) {
continue;
}
@ -232,9 +239,11 @@ StoreVirtualMemoryAddressChangePointers (
ASSERT_EFI_ERROR (Status);
return;
}
mRuntimeMmioRanges[RangeIndex++] = PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges;
}
}
DEBUG ((
DEBUG_INFO,
" %a %a: %d MMIO ranges buffers saved for future virtual memory conversion.\n",
@ -260,7 +269,7 @@ StoreVirtualMemoryAddressChangePointers (
**/
EFI_STATUS
ValidatePrmDataBuffer (
IN CONST PRM_DATA_BUFFER *PrmDataBuffer
IN CONST PRM_DATA_BUFFER *PrmDataBuffer
)
{
if (PrmDataBuffer == NULL) {
@ -271,6 +280,7 @@ ValidatePrmDataBuffer (
DEBUG ((DEBUG_ERROR, " %a %a: The PRM data buffer signature is invalid. PRM module.\n", _DBGMSGID_, __FUNCTION__));
return EFI_NOT_FOUND;
}
if (PrmDataBuffer->Header.Length < sizeof (PRM_DATA_BUFFER_HEADER)) {
DEBUG ((DEBUG_ERROR, " %a %a: The PRM data buffer length is invalid.\n", _DBGMSGID_, __FUNCTION__));
return EFI_BUFFER_TOO_SMALL;
@ -293,7 +303,7 @@ ValidatePrmDataBuffer (
**/
EFI_STATUS
ValidatePrmContextBuffer (
IN CONST PRM_CONTEXT_BUFFER *PrmContextBuffer
IN CONST PRM_CONTEXT_BUFFER *PrmContextBuffer
)
{
if (PrmContextBuffer == NULL) {
@ -310,7 +320,7 @@ ValidatePrmContextBuffer (
return EFI_NOT_FOUND;
}
if (PrmContextBuffer->StaticDataBuffer != NULL && EFI_ERROR (ValidatePrmDataBuffer (PrmContextBuffer->StaticDataBuffer))) {
if ((PrmContextBuffer->StaticDataBuffer != NULL) && EFI_ERROR (ValidatePrmDataBuffer (PrmContextBuffer->StaticDataBuffer))) {
DEBUG ((
DEBUG_ERROR,
" %a %a: Error in static buffer for PRM handler %g.\n",
@ -337,11 +347,11 @@ ValidatePrmContextBuffer (
VOID
EFIAPI
PrmConfigVirtualAddressChangeEvent (
IN EFI_EVENT Event,
IN VOID *Context
IN EFI_EVENT Event,
IN VOID *Context
)
{
UINTN Index;
UINTN Index;
//
// Convert runtime MMIO ranges
@ -365,47 +375,47 @@ PrmConfigVirtualAddressChangeEvent (
VOID
EFIAPI
PrmConfigEndOfDxeNotification (
IN EFI_EVENT Event,
IN VOID *Context
IN EFI_EVENT Event,
IN VOID *Context
)
{
EFI_STATUS Status;
UINTN HandleCount;
UINTN BufferIndex;
UINTN HandleIndex;
EFI_HANDLE *HandleBuffer;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
EFI_STATUS Status;
UINTN HandleCount;
UINTN BufferIndex;
UINTN HandleIndex;
EFI_HANDLE *HandleBuffer;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
HandleBuffer = NULL;
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gPrmConfigProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
Status = gBS->LocateHandleBuffer (
ByProtocol,
&gPrmConfigProtocolGuid,
NULL,
&HandleCount,
&HandleBuffer
);
if (!EFI_ERROR (Status)) {
for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) {
Status = gBS->HandleProtocol (
HandleBuffer[HandleIndex],
&gPrmConfigProtocolGuid,
(VOID **) &PrmConfigProtocol
(VOID **)&PrmConfigProtocol
);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status) || PrmConfigProtocol == NULL) {
if (EFI_ERROR (Status) || (PrmConfigProtocol == NULL)) {
continue;
}
DEBUG ((
DEBUG_INFO,
" %a %a: Found PRM configuration protocol for PRM module %g.\n",
_DBGMSGID_,
__FUNCTION__,
&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid
));
_DBGMSGID_,
__FUNCTION__,
&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid
));
DEBUG ((DEBUG_INFO, " %a %a: Validating module context buffers...\n", _DBGMSGID_, __FUNCTION__));
for (BufferIndex = 0; BufferIndex < PrmConfigProtocol->ModuleContextBuffers.BufferCount; BufferIndex++) {
@ -422,16 +432,17 @@ PrmConfigEndOfDxeNotification (
));
}
}
DEBUG ((DEBUG_INFO, " %a %a: Module context buffer validation complete.\n", _DBGMSGID_, __FUNCTION__));
if (PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges != NULL) {
DEBUG ((
DEBUG_INFO,
" %a %a: Found %d PRM runtime MMIO ranges.\n",
_DBGMSGID_,
__FUNCTION__,
PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges->Count
));
_DBGMSGID_,
__FUNCTION__,
PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges->Count
));
SetRuntimeMemoryRangeAttributes (PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges);
mMaxRuntimeMmioRangeCount++;
}
@ -443,7 +454,8 @@ PrmConfigEndOfDxeNotification (
if (HandleBuffer != NULL) {
gBS->FreePool (HandleBuffer);
}
gBS->CloseEvent(Event);
gBS->CloseEvent (Event);
}
/**
@ -459,19 +471,19 @@ PrmConfigEndOfDxeNotification (
EFI_STATUS
EFIAPI
PrmConfigEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_EVENT Event;
EFI_STATUS Status;
EFI_EVENT Event;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
//
// Register a notification function to change memory attributes at end of DXE
//
Event = NULL;
Event = NULL;
Status = gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_CALLBACK,
@ -485,7 +497,7 @@ PrmConfigEntryPoint (
//
// Register a notification function for virtual address change
//
Event = NULL;
Event = NULL;
Status = gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_NOTIFY,

View File

@ -14,11 +14,11 @@
#include <Base.h>
#include <IndustryStandard/Acpi10.h>
#define PRM_TABLE_SIGNATURE SIGNATURE_32 ('P', 'R', 'M', 'T')
#define PRM_TABLE_SIGNATURE SIGNATURE_32 ('P', 'R', 'M', 'T')
#define PRM_TABLE_REVISION 0x0
#define PRM_MODULE_INFORMATION_STRUCT_REVISION 0x00
#define PRM_HANDLER_INFORMATION_STRUCT_REVISION 0x00
#define PRM_TABLE_REVISION 0x0
#define PRM_MODULE_INFORMATION_STRUCT_REVISION 0x00
#define PRM_HANDLER_INFORMATION_STRUCT_REVISION 0x00
#pragma pack(push, 1)
@ -26,13 +26,13 @@
// Platform Runtime Mechanism (PRM) ACPI Table (PRMT) structures
//
typedef struct {
UINT16 StructureRevision; ///< Revision of this structure
UINT16 StructureLength; ///< Length in bytes of this structure
GUID Identifier; ///< GUID of the PRM handler for this structure
UINT64 PhysicalAddress; ///< Physical address of this PRM handler
UINT64 StaticDataBuffer; ///< Physical address of the static data buffer for
UINT16 StructureRevision; ///< Revision of this structure
UINT16 StructureLength; ///< Length in bytes of this structure
GUID Identifier; ///< GUID of the PRM handler for this structure
UINT64 PhysicalAddress; ///< Physical address of this PRM handler
UINT64 StaticDataBuffer; ///< Physical address of the static data buffer for
///< this PRM handler (PRM_DATA_BUFFER *)
UINT64 AcpiParameterBuffer; ///< Physical address of the parameter buffer
UINT64 AcpiParameterBuffer; ///< Physical address of the parameter buffer
///< for this PRM handler (PRM_DATA_BUFFER *)
///< that is only used in the case of _DSM invocation.
///< If _DSM invocation is not used, this value is
@ -40,29 +40,29 @@ typedef struct {
} PRM_HANDLER_INFORMATION_STRUCT;
typedef struct {
UINT16 StructureRevision; ///< Revision of this structure
UINT16 StructureLength; ///< Length in bytes of this structure including the
UINT16 StructureRevision; ///< Revision of this structure
UINT16 StructureLength; ///< Length in bytes of this structure including the
///< variable length PRM Handler Info array
GUID Identifier; ///< GUID of the PRM module for this structure
UINT16 MajorRevision; ///< PRM module major revision
UINT16 MinorRevision; ///< PRM module minor revision
UINT16 HandlerCount; ///< Number of entries in the Handler Info array
UINT32 HandlerInfoOffset; ///< Offset in bytes from the beginning of this
GUID Identifier; ///< GUID of the PRM module for this structure
UINT16 MajorRevision; ///< PRM module major revision
UINT16 MinorRevision; ///< PRM module minor revision
UINT16 HandlerCount; ///< Number of entries in the Handler Info array
UINT32 HandlerInfoOffset; ///< Offset in bytes from the beginning of this
///< structure to the Handler Info array
UINT64 RuntimeMmioRanges; ///< Physical address of the PRM MMIO Ranges
UINT64 RuntimeMmioRanges; ///< Physical address of the PRM MMIO Ranges
///< structure (PRM_MODULE_RUNTIME_MMIO_RANGES *)
PRM_HANDLER_INFORMATION_STRUCT HandlerInfoStructure[1];
PRM_HANDLER_INFORMATION_STRUCT HandlerInfoStructure[1];
} PRM_MODULE_INFORMATION_STRUCT;
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header; ///< Standard ACPI description header
GUID PrmPlatformGuid; ///< A GUID that uniquely identifies this platform.
EFI_ACPI_DESCRIPTION_HEADER Header; ///< Standard ACPI description header
GUID PrmPlatformGuid; ///< A GUID that uniquely identifies this platform.
///< Used to check for compatibility in PRM module
///< runtime updates.
UINT32 PrmModuleInfoOffset; ///< Offset in bytes from the beginning of this
UINT32 PrmModuleInfoOffset; ///< Offset in bytes from the beginning of this
///< structure to the PRM Module Info array
UINT32 PrmModuleInfoCount; ///< Number of entries in the PRM Module Info array
PRM_MODULE_INFORMATION_STRUCT PrmModuleInfoStructure[1];
UINT32 PrmModuleInfoCount; ///< Number of entries in the PRM Module Info array
PRM_MODULE_INFORMATION_STRUCT PrmModuleInfoStructure[1];
} PRM_ACPI_DESCRIPTION_TABLE;
#pragma pack(pop)
@ -72,19 +72,19 @@ typedef struct {
//
// Todo: Revisit whether to use; currently both macros are not used
//
#define PRM_MODULE_INFORMATION_STRUCTURE(ModuleGuid, ModuleRevision, HandlerCount, PrmHanderInfoStructureArray) { \
#define PRM_MODULE_INFORMATION_STRUCTURE(ModuleGuid, ModuleRevision, HandlerCount, PrmHanderInfoStructureArray) { \
{ \
PRM_MODULE_INFORMATION_STRUCT_REVISION, /* UINT16 StructureRevision; */ \
(OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) + (HandlerCount * sizeof (PRM_HANDLER_INFORMATION_STRUCT))) /* UINT16 StructureLength; */ \
ModuleGuid, /* GUID ModuleGuid; */ \
ModuleRevision, /* UINT16 ModuleRevision */ \
HandlerCount, /* UINT16 HandlerCount */ \
OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoOffset), /* UINT32 HandlerInfoOffset */ \
PrmHanderInfoStructureArray /* PRM_HANDLER_INFORMATION_STRUCT HandlerInfoStructure */ \
PRM_MODULE_INFORMATION_STRUCT_REVISION, /* UINT16 StructureRevision; */ \
(OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) + (HandlerCount * sizeof (PRM_HANDLER_INFORMATION_STRUCT))) /* UINT16 StructureLength; */ \
ModuleGuid, /* GUID ModuleGuid; */ \
ModuleRevision, /* UINT16 ModuleRevision */ \
HandlerCount, /* UINT16 HandlerCount */ \
OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoOffset), /* UINT32 HandlerInfoOffset */ \
PrmHanderInfoStructureArray /* PRM_HANDLER_INFORMATION_STRUCT HandlerInfoStructure */ \
} \
}
#define PRM_HANDLER_INFORMATION_STRUCTURE(HandlerGuid, PhysicalAddress) { \
#define PRM_HANDLER_INFORMATION_STRUCTURE(HandlerGuid, PhysicalAddress) { \
{ \
PRM_HANDLER_INFORMATION_STRUCT_REVISION, /* UINT16 StructureRevision; */ \
sizeof (PRM_HANDLER_INFORMATION_STRUCT), /* UINT16 StructureLength; */ \

View File

@ -30,8 +30,8 @@
#define _DBGMSGID_ "[PRMLOADER]"
UINTN mPrmHandlerCount;
UINTN mPrmModuleCount;
UINTN mPrmHandlerCount;
UINTN mPrmModuleCount;
/**
Processes a list of PRM context entries to build a PRM ACPI table.
@ -50,34 +50,35 @@ UINTN mPrmModuleCount;
**/
EFI_STATUS
ProcessPrmModules (
OUT PRM_ACPI_DESCRIPTION_TABLE **PrmAcpiDescriptionTable
OUT PRM_ACPI_DESCRIPTION_TABLE **PrmAcpiDescriptionTable
)
{
EFI_IMAGE_EXPORT_DIRECTORY *CurrentImageExportDirectory;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *CurrentExportDescriptorStruct;
PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiTable;
PRM_MODULE_IMAGE_CONTEXT *CurrentPrmModuleImageContext;
CONST CHAR8 *CurrentExportDescriptorHandlerName;
EFI_IMAGE_EXPORT_DIRECTORY *CurrentImageExportDirectory;
PRM_MODULE_EXPORT_DESCRIPTOR_STRUCT *CurrentExportDescriptorStruct;
PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiTable;
PRM_MODULE_IMAGE_CONTEXT *CurrentPrmModuleImageContext;
CONST CHAR8 *CurrentExportDescriptorHandlerName;
ACPI_PARAMETER_BUFFER_DESCRIPTOR *CurrentModuleAcpiParamDescriptors;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *CurrentModuleContextBuffers;
PRM_MODULE_INFORMATION_STRUCT *CurrentModuleInfoStruct;
PRM_HANDLER_INFORMATION_STRUCT *CurrentHandlerInfoStruct;
ACPI_PARAMETER_BUFFER_DESCRIPTOR *CurrentModuleAcpiParamDescriptors;
PRM_CONTEXT_BUFFER *CurrentContextBuffer;
PRM_MODULE_CONTEXT_BUFFERS *CurrentModuleContextBuffers;
PRM_MODULE_INFORMATION_STRUCT *CurrentModuleInfoStruct;
PRM_HANDLER_INFORMATION_STRUCT *CurrentHandlerInfoStruct;
EFI_STATUS Status;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
UINTN AcpiParamIndex;
UINTN HandlerIndex;
UINT32 PrmAcpiDescriptionTableBufferSize;
EFI_STATUS Status;
EFI_PHYSICAL_ADDRESS CurrentImageAddress;
UINTN AcpiParamIndex;
UINTN HandlerIndex;
UINT32 PrmAcpiDescriptionTableBufferSize;
UINT64 HandlerPhysicalAddress;
UINT64 HandlerPhysicalAddress;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
if (PrmAcpiDescriptionTable == NULL) {
return EFI_INVALID_PARAMETER;
}
*PrmAcpiDescriptionTable = NULL;
//
@ -96,42 +97,42 @@ ProcessPrmModules (
DEBUG ((DEBUG_INFO, " %a %a: %d total PRM modules to process.\n", _DBGMSGID_, __FUNCTION__, mPrmModuleCount));
DEBUG ((DEBUG_INFO, " %a %a: %d total PRM handlers to process.\n", _DBGMSGID_, __FUNCTION__, mPrmHandlerCount));
PrmAcpiDescriptionTableBufferSize = (UINT32) (OFFSET_OF (PRM_ACPI_DESCRIPTION_TABLE, PrmModuleInfoStructure) +
(OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) * mPrmModuleCount) +
(sizeof (PRM_HANDLER_INFORMATION_STRUCT) * mPrmHandlerCount)
);
PrmAcpiDescriptionTableBufferSize = (UINT32)(OFFSET_OF (PRM_ACPI_DESCRIPTION_TABLE, PrmModuleInfoStructure) +
(OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) * mPrmModuleCount) +
(sizeof (PRM_HANDLER_INFORMATION_STRUCT) * mPrmHandlerCount)
);
DEBUG ((DEBUG_INFO, " %a %a: Total PRM ACPI table size: 0x%x.\n", _DBGMSGID_, __FUNCTION__, PrmAcpiDescriptionTableBufferSize));
PrmAcpiTable = AllocateZeroPool ((UINTN) PrmAcpiDescriptionTableBufferSize);
PrmAcpiTable = AllocateZeroPool ((UINTN)PrmAcpiDescriptionTableBufferSize);
if (PrmAcpiTable == NULL) {
return EFI_OUT_OF_RESOURCES;
}
PrmAcpiTable->Header.Signature = PRM_TABLE_SIGNATURE;
PrmAcpiTable->Header.Length = PrmAcpiDescriptionTableBufferSize;
PrmAcpiTable->Header.Revision = PRM_TABLE_REVISION;
PrmAcpiTable->Header.Checksum = 0x0;
PrmAcpiTable->Header.Signature = PRM_TABLE_SIGNATURE;
PrmAcpiTable->Header.Length = PrmAcpiDescriptionTableBufferSize;
PrmAcpiTable->Header.Revision = PRM_TABLE_REVISION;
PrmAcpiTable->Header.Checksum = 0x0;
CopyMem (&PrmAcpiTable->Header.OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeof (PrmAcpiTable->Header.OemId));
PrmAcpiTable->Header.OemTableId = PcdGet64 (PcdAcpiDefaultOemTableId);
PrmAcpiTable->Header.OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);
PrmAcpiTable->Header.CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);
PrmAcpiTable->Header.CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);
PrmAcpiTable->Header.OemTableId = PcdGet64 (PcdAcpiDefaultOemTableId);
PrmAcpiTable->Header.OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);
PrmAcpiTable->Header.CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);
PrmAcpiTable->Header.CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);
CopyGuid (&PrmAcpiTable->PrmPlatformGuid, &gEdkiiDscPlatformGuid);
PrmAcpiTable->PrmModuleInfoOffset = OFFSET_OF (PRM_ACPI_DESCRIPTION_TABLE, PrmModuleInfoStructure);
PrmAcpiTable->PrmModuleInfoCount = (UINT32) mPrmModuleCount;
PrmAcpiTable->PrmModuleInfoOffset = OFFSET_OF (PRM_ACPI_DESCRIPTION_TABLE, PrmModuleInfoStructure);
PrmAcpiTable->PrmModuleInfoCount = (UINT32)mPrmModuleCount;
//
// Iterate across all PRM Modules on the list
//
CurrentModuleInfoStruct = &PrmAcpiTable->PrmModuleInfoStructure[0];
for (
CurrentPrmModuleImageContext = NULL, Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext);
!EFI_ERROR (Status);
Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext)) {
CurrentImageAddress = CurrentPrmModuleImageContext->PeCoffImageContext.ImageAddress;
CurrentImageExportDirectory = CurrentPrmModuleImageContext->ExportDirectory;
CurrentExportDescriptorStruct = CurrentPrmModuleImageContext->ExportDescriptor;
CurrentPrmModuleImageContext = NULL, Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext);
!EFI_ERROR (Status);
Status = GetNextPrmModuleEntry (&CurrentPrmModuleImageContext))
{
CurrentImageAddress = CurrentPrmModuleImageContext->PeCoffImageContext.ImageAddress;
CurrentImageExportDirectory = CurrentPrmModuleImageContext->ExportDirectory;
CurrentExportDescriptorStruct = CurrentPrmModuleImageContext->ExportDescriptor;
CurrentModuleAcpiParamDescriptors = NULL;
DEBUG ((
@ -139,39 +140,39 @@ ProcessPrmModules (
" %a %a: PRM Module - %a with %d handlers.\n",
_DBGMSGID_,
__FUNCTION__,
(CHAR8 *) ((UINTN) CurrentImageAddress + CurrentImageExportDirectory->Name),
(CHAR8 *)((UINTN)CurrentImageAddress + CurrentImageExportDirectory->Name),
CurrentExportDescriptorStruct->Header.NumberPrmHandlers
));
CurrentModuleInfoStruct->StructureRevision = PRM_MODULE_INFORMATION_STRUCT_REVISION;
CurrentModuleInfoStruct->StructureLength = (
OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) +
(CurrentExportDescriptorStruct->Header.NumberPrmHandlers * sizeof (PRM_HANDLER_INFORMATION_STRUCT))
);
CurrentModuleInfoStruct->StructureLength = (
OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure) +
(CurrentExportDescriptorStruct->Header.NumberPrmHandlers * sizeof (PRM_HANDLER_INFORMATION_STRUCT))
);
CopyGuid (&CurrentModuleInfoStruct->Identifier, &CurrentExportDescriptorStruct->Header.ModuleGuid);
CurrentModuleInfoStruct->HandlerCount = (UINT32) CurrentExportDescriptorStruct->Header.NumberPrmHandlers;
CurrentModuleInfoStruct->HandlerInfoOffset = OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure);
CurrentModuleInfoStruct->HandlerCount = (UINT32)CurrentExportDescriptorStruct->Header.NumberPrmHandlers;
CurrentModuleInfoStruct->HandlerInfoOffset = OFFSET_OF (PRM_MODULE_INFORMATION_STRUCT, HandlerInfoStructure);
CurrentModuleInfoStruct->MajorRevision = 0;
CurrentModuleInfoStruct->MinorRevision = 0;
Status = GetImageVersionInPeCoffImage (
(VOID *) (UINTN) CurrentImageAddress,
&CurrentPrmModuleImageContext->PeCoffImageContext,
&CurrentModuleInfoStruct->MajorRevision,
&CurrentModuleInfoStruct->MinorRevision
);
Status = GetImageVersionInPeCoffImage (
(VOID *)(UINTN)CurrentImageAddress,
&CurrentPrmModuleImageContext->PeCoffImageContext,
&CurrentModuleInfoStruct->MajorRevision,
&CurrentModuleInfoStruct->MinorRevision
);
ASSERT_EFI_ERROR (Status);
// It is currently valid for a PRM module not to use a context buffer
Status = GetModuleContextBuffers (
ByModuleGuid,
&CurrentModuleInfoStruct->Identifier,
(CONST PRM_MODULE_CONTEXT_BUFFERS **) &CurrentModuleContextBuffers
);
ByModuleGuid,
&CurrentModuleInfoStruct->Identifier,
(CONST PRM_MODULE_CONTEXT_BUFFERS **)&CurrentModuleContextBuffers
);
ASSERT (!EFI_ERROR (Status) || Status == EFI_NOT_FOUND);
if (!EFI_ERROR (Status) && CurrentModuleContextBuffers != NULL) {
CurrentModuleInfoStruct->RuntimeMmioRanges = (UINT64) (UINTN) CurrentModuleContextBuffers->RuntimeMmioRanges;
CurrentModuleAcpiParamDescriptors = CurrentModuleContextBuffers->AcpiParameterBufferDescriptors;
if (!EFI_ERROR (Status) && (CurrentModuleContextBuffers != NULL)) {
CurrentModuleInfoStruct->RuntimeMmioRanges = (UINT64)(UINTN)CurrentModuleContextBuffers->RuntimeMmioRanges;
CurrentModuleAcpiParamDescriptors = CurrentModuleContextBuffers->AcpiParameterBufferDescriptors;
}
//
@ -181,21 +182,21 @@ ProcessPrmModules (
CurrentHandlerInfoStruct = &(CurrentModuleInfoStruct->HandlerInfoStructure[HandlerIndex]);
CurrentHandlerInfoStruct->StructureRevision = PRM_HANDLER_INFORMATION_STRUCT_REVISION;
CurrentHandlerInfoStruct->StructureLength = sizeof (PRM_HANDLER_INFORMATION_STRUCT);
CurrentHandlerInfoStruct->StructureLength = sizeof (PRM_HANDLER_INFORMATION_STRUCT);
CopyGuid (
&CurrentHandlerInfoStruct->Identifier,
&CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerGuid
);
CurrentExportDescriptorHandlerName = (CONST CHAR8 *) CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerName;
CurrentExportDescriptorHandlerName = (CONST CHAR8 *)CurrentExportDescriptorStruct->PrmHandlerExportDescriptors[HandlerIndex].PrmHandlerName;
Status = GetContextBuffer (
&CurrentHandlerInfoStruct->Identifier,
CurrentModuleContextBuffers,
(CONST PRM_CONTEXT_BUFFER **) &CurrentContextBuffer
(CONST PRM_CONTEXT_BUFFER **)&CurrentContextBuffer
);
if (!EFI_ERROR (Status)) {
CurrentHandlerInfoStruct->StaticDataBuffer = (UINT64) (UINTN) CurrentContextBuffer->StaticDataBuffer;
CurrentHandlerInfoStruct->StaticDataBuffer = (UINT64)(UINTN)CurrentContextBuffer->StaticDataBuffer;
}
Status = GetExportEntryAddress (
@ -223,15 +224,17 @@ ProcessPrmModules (
if (CurrentModuleAcpiParamDescriptors != NULL) {
for (AcpiParamIndex = 0; AcpiParamIndex < CurrentModuleContextBuffers->AcpiParameterBufferDescriptorCount; AcpiParamIndex++) {
if (CompareGuid (&CurrentModuleAcpiParamDescriptors[AcpiParamIndex].HandlerGuid, &CurrentHandlerInfoStruct->Identifier)) {
CurrentHandlerInfoStruct->AcpiParameterBuffer = (UINT64) (UINTN) (
CurrentModuleAcpiParamDescriptors[AcpiParamIndex].AcpiParameterBufferAddress
);
CurrentHandlerInfoStruct->AcpiParameterBuffer = (UINT64)(UINTN)(
CurrentModuleAcpiParamDescriptors[AcpiParamIndex].AcpiParameterBufferAddress
);
}
}
}
}
CurrentModuleInfoStruct = (PRM_MODULE_INFORMATION_STRUCT *) ((UINTN) CurrentModuleInfoStruct + CurrentModuleInfoStruct->StructureLength);
CurrentModuleInfoStruct = (PRM_MODULE_INFORMATION_STRUCT *)((UINTN)CurrentModuleInfoStruct + CurrentModuleInfoStruct->StructureLength);
}
*PrmAcpiDescriptionTable = PrmAcpiTable;
return EFI_SUCCESS;
@ -252,18 +255,18 @@ ProcessPrmModules (
**/
EFI_STATUS
PublishPrmAcpiTable (
IN PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiDescriptionTable
IN PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiDescriptionTable
)
{
EFI_STATUS Status;
EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
UINTN TableKey;
EFI_STATUS Status;
EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
UINTN TableKey;
if (PrmAcpiDescriptionTable == NULL || PrmAcpiDescriptionTable->Header.Signature != PRM_TABLE_SIGNATURE) {
if ((PrmAcpiDescriptionTable == NULL) || (PrmAcpiDescriptionTable->Header.Signature != PRM_TABLE_SIGNATURE)) {
return EFI_INVALID_PARAMETER;
}
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTableProtocol);
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTableProtocol);
if (!EFI_ERROR (Status)) {
TableKey = 0;
//
@ -279,6 +282,7 @@ PublishPrmAcpiTable (
DEBUG ((DEBUG_INFO, "%a %a: The PRMT ACPI table was installed successfully.\n", _DBGMSGID_, __FUNCTION__));
}
}
ASSERT_EFI_ERROR (Status);
return Status;
@ -305,12 +309,12 @@ PublishPrmAcpiTable (
VOID
EFIAPI
PrmLoaderEndOfDxeNotification (
IN EFI_EVENT Event,
IN VOID *Context
IN EFI_EVENT Event,
IN VOID *Context
)
{
EFI_STATUS Status;
PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiDescriptionTable;
EFI_STATUS Status;
PRM_ACPI_DESCRIPTION_TABLE *PrmAcpiDescriptionTable;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
@ -326,6 +330,7 @@ PrmLoaderEndOfDxeNotification (
if (PrmAcpiDescriptionTable != NULL) {
FreePool (PrmAcpiDescriptionTable);
}
gBS->CloseEvent (Event);
}
@ -342,12 +347,12 @@ PrmLoaderEndOfDxeNotification (
EFI_STATUS
EFIAPI
PrmLoaderEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_EVENT EndOfDxeEvent;
EFI_STATUS Status;
EFI_EVENT EndOfDxeEvent;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
@ -355,7 +360,7 @@ PrmLoaderEntryPoint (
// Discover and process installed PRM modules at the End of DXE
// The PRM ACPI table is published if one or PRM modules are discovered
//
Status = gBS->CreateEventEx(
Status = gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_CALLBACK,
PrmLoaderEndOfDxeNotification,

View File

@ -33,14 +33,14 @@
**/
EFI_STATUS
InstallPrmSsdt (
IN CONST UINT8 *OemId
IN CONST UINT8 *OemId
)
{
EFI_STATUS Status;
UINTN SsdtSize;
UINTN TableKey;
EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
EFI_ACPI_DESCRIPTION_HEADER *Ssdt;
EFI_STATUS Status;
UINTN SsdtSize;
UINTN TableKey;
EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
EFI_ACPI_DESCRIPTION_HEADER *Ssdt;
DEBUG ((DEBUG_INFO, "%a %a - Entry.\n", _DBGMSGID_, __FUNCTION__));
@ -48,7 +48,7 @@ InstallPrmSsdt (
return EFI_INVALID_PARAMETER;
}
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTableProtocol);
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTableProtocol);
if (!EFI_ERROR (Status)) {
//
// Discover the SSDT
@ -57,7 +57,7 @@ InstallPrmSsdt (
&gEfiCallerIdGuid,
EFI_SECTION_RAW,
0,
(VOID **) &Ssdt,
(VOID **)&Ssdt,
&SsdtSize
);
ASSERT_EFI_ERROR (Status);
@ -72,12 +72,12 @@ InstallPrmSsdt (
// Publish the SSDT. Table is re-checksummed.
//
TableKey = 0;
Status = AcpiTableProtocol->InstallAcpiTable (
AcpiTableProtocol,
Ssdt,
SsdtSize,
&TableKey
);
Status = AcpiTableProtocol->InstallAcpiTable (
AcpiTableProtocol,
Ssdt,
SsdtSize,
&TableKey
);
ASSERT_EFI_ERROR (Status);
}
@ -97,13 +97,13 @@ InstallPrmSsdt (
EFI_STATUS
EFIAPI
PrmSsdtInstallEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
Status = InstallPrmSsdt ((UINT8 *) PcdGetPtr (PcdAcpiDefaultOemId));
Status = InstallPrmSsdt ((UINT8 *)PcdGetPtr (PcdAcpiDefaultOemId));
ASSERT_EFI_ERROR (Status);
return Status;

View File

@ -17,10 +17,14 @@
STATIC EFI_HANDLE mPrmConfigProtocolHandle;
// {dc2a58a6-5927-4776-b995-d118a27335a2}
STATIC CONST EFI_GUID mPrmModuleGuid = {0xdc2a58a6, 0x5927, 0x4776, {0xb9, 0x95, 0xd1, 0x18, 0xa2, 0x73, 0x35, 0xa2}};
STATIC CONST EFI_GUID mPrmModuleGuid = {
0xdc2a58a6, 0x5927, 0x4776, { 0xb9, 0x95, 0xd1, 0x18, 0xa2, 0x73, 0x35, 0xa2 }
};
// {2e4f2d13-6240-4ed0-a401-c723fbdc34e8}
STATIC CONST EFI_GUID mCheckParamBufferPrmHandlerGuid = {0x2e4f2d13, 0x6240, 0x4ed0, {0xa4, 0x01, 0xc7, 0x23, 0xfb, 0xdc, 0x34, 0xe8}};
STATIC CONST EFI_GUID mCheckParamBufferPrmHandlerGuid = {
0x2e4f2d13, 0x6240, 0x4ed0, { 0xa4, 0x01, 0xc7, 0x23, 0xfb, 0xdc, 0x34, 0xe8 }
};
/**
Constructor of the PRM configuration library.
@ -34,8 +38,8 @@ STATIC CONST EFI_GUID mCheckParamBufferPrmHandlerGuid = {0x2e4f2d13, 0x6240, 0x4
EFI_STATUS
EFIAPI
AcpiParameterBufferModuleConfigLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
@ -43,9 +47,9 @@ AcpiParameterBufferModuleConfigLibConstructor (
ACPI_PARAMETER_BUFFER_DESCRIPTOR *AcpiParamBufferDescriptor;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
AcpiParameterBuffer = NULL;
AcpiParameterBuffer = NULL;
AcpiParamBufferDescriptor = NULL;
PrmConfigProtocol = NULL;
PrmConfigProtocol = NULL;
/*
In this sample PRM module, the protocol describing this sample module's resources is simply
@ -82,15 +86,16 @@ AcpiParameterBufferModuleConfigLibConstructor (
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
CopyGuid (&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid, &mPrmModuleGuid);
// Populate the ACPI Parameter Buffer Descriptor structure
CopyGuid (&AcpiParamBufferDescriptor->HandlerGuid, &mCheckParamBufferPrmHandlerGuid);
AcpiParamBufferDescriptor->AcpiParameterBufferAddress = (UINT64) (UINTN) AcpiParameterBuffer;
AcpiParamBufferDescriptor->AcpiParameterBufferAddress = (UINT64)(UINTN)AcpiParameterBuffer;
// Populate the PRM Module Context Buffers structure
PrmConfigProtocol->ModuleContextBuffers.AcpiParameterBufferDescriptorCount = 1;
PrmConfigProtocol->ModuleContextBuffers.AcpiParameterBufferDescriptors = AcpiParamBufferDescriptor;
PrmConfigProtocol->ModuleContextBuffers.AcpiParameterBufferDescriptors = AcpiParamBufferDescriptor;
//
// Install the PRM Configuration Protocol for this module. This indicates the configuration
@ -100,7 +105,7 @@ AcpiParameterBufferModuleConfigLibConstructor (
&mPrmConfigProtocolHandle,
&gPrmConfigProtocolGuid,
EFI_NATIVE_INTERFACE,
(VOID *) PrmConfigProtocol
(VOID *)PrmConfigProtocol
);
Done:
@ -108,9 +113,11 @@ Done:
if (AcpiParameterBuffer != NULL) {
FreePool (AcpiParameterBuffer);
}
if (AcpiParamBufferDescriptor != NULL) {
FreePool (AcpiParamBufferDescriptor);
}
if (PrmConfigProtocol != NULL) {
FreePool (PrmConfigProtocol);
}

View File

@ -15,14 +15,14 @@
// TEMP
#include <Library/DebugLib.h>
#define PARAM_BUFFER_TEST_SIGNATURE SIGNATURE_32('T','E','S','T')
#define PARAM_BUFFER_TEST_SIGNATURE SIGNATURE_32('T','E','S','T')
//
// PRM Handler GUIDs
//
// {2e4f2d13-6240-4ed0-a401-c723fbdc34e8}
#define CHECK_PARAM_BUFFER_PRM_HANDLER_GUID {0x2e4f2d13, 0x6240, 0x4ed0, {0xa4, 0x01, 0xc7, 0x23, 0xfb, 0xdc, 0x34, 0xe8}}
#define CHECK_PARAM_BUFFER_PRM_HANDLER_GUID {0x2e4f2d13, 0x6240, 0x4ed0, {0xa4, 0x01, 0xc7, 0x23, 0xfb, 0xdc, 0x34, 0xe8}}
/**
A sample Platform Runtime Mechanism (PRM) handler.
@ -39,13 +39,12 @@
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (CheckParamBufferPrmHandler)
{
PRM_HANDLER_EXPORT (CheckParamBufferPrmHandler) {
if (ParameterBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
if (*((UINT32 *) ParameterBuffer) == PARAM_BUFFER_TEST_SIGNATURE) {
if (*((UINT32 *)ParameterBuffer) == PARAM_BUFFER_TEST_SIGNATURE) {
return EFI_SUCCESS;
}
@ -71,8 +70,8 @@ PRM_MODULE_EXPORT (
EFI_STATUS
EFIAPI
PrmSampleAcpiParameterBufferModuleInit (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return EFI_SUCCESS;

View File

@ -13,12 +13,12 @@
#include <Base.h>
#define SOME_VALUE_ARRAY_MAX_VALUES 16
#define SOME_VALUE_ARRAY_MAX_VALUES 16
typedef struct {
BOOLEAN Policy1Enabled;
BOOLEAN Policy2Enabled;
UINT8 SomeValueArray[SOME_VALUE_ARRAY_MAX_VALUES];
BOOLEAN Policy1Enabled;
BOOLEAN Policy2Enabled;
UINT8 SomeValueArray[SOME_VALUE_ARRAY_MAX_VALUES];
} STATIC_DATA_SAMPLE_CONTEXT_BUFFER_MODULE;
#endif

View File

@ -21,10 +21,14 @@
STATIC EFI_HANDLE mPrmConfigProtocolHandle;
// {5a6cf42b-8bb4-472c-a233-5c4dc4033dc7}
STATIC CONST EFI_GUID mPrmModuleGuid = {0x5a6cf42b, 0x8bb4, 0x472c, {0xa2, 0x33, 0x5c, 0x4d, 0xc4, 0x03, 0x3d, 0xc7}};
STATIC CONST EFI_GUID mPrmModuleGuid = {
0x5a6cf42b, 0x8bb4, 0x472c, { 0xa2, 0x33, 0x5c, 0x4d, 0xc4, 0x03, 0x3d, 0xc7 }
};
// {e1466081-7562-430f-896b-b0e523dc335a}
STATIC CONST EFI_GUID mCheckStaticDataBufferPrmHandlerGuid = {0xe1466081, 0x7562, 0x430f, {0x89, 0x6b, 0xb0, 0xe5, 0x23, 0xdc, 0x33, 0x5a}};
STATIC CONST EFI_GUID mCheckStaticDataBufferPrmHandlerGuid = {
0xe1466081, 0x7562, 0x430f, { 0x89, 0x6b, 0xb0, 0xe5, 0x23, 0xdc, 0x33, 0x5a }
};
/**
Populates the static data buffer for this PRM module.
@ -70,16 +74,17 @@ PopulateStaticDataBuffer (
**/
EFI_STATUS
GetStaticDataBuffer (
OUT PRM_DATA_BUFFER **StaticDataBuffer
OUT PRM_DATA_BUFFER **StaticDataBuffer
)
{
EFI_STATUS Status;
PRM_DATA_BUFFER *DataBuffer;
UINTN DataBufferLength;
EFI_STATUS Status;
PRM_DATA_BUFFER *DataBuffer;
UINTN DataBufferLength;
if (StaticDataBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
*StaticDataBuffer = NULL;
//
@ -96,9 +101,9 @@ GetStaticDataBuffer (
// Initialize the data buffer header
//
DataBuffer->Header.Signature = PRM_DATA_BUFFER_HEADER_SIGNATURE;
DataBuffer->Header.Length = (UINT32) DataBufferLength;
DataBuffer->Header.Length = (UINT32)DataBufferLength;
Status = PopulateStaticDataBuffer ((STATIC_DATA_SAMPLE_CONTEXT_BUFFER_MODULE *) &DataBuffer->Data[0]);
Status = PopulateStaticDataBuffer ((STATIC_DATA_SAMPLE_CONTEXT_BUFFER_MODULE *)&DataBuffer->Data[0]);
ASSERT_EFI_ERROR (Status);
*StaticDataBuffer = DataBuffer;
@ -117,17 +122,17 @@ GetStaticDataBuffer (
EFI_STATUS
EFIAPI
ContextBufferModuleConfigLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *PrmContextBuffer;
PRM_DATA_BUFFER *StaticDataBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
EFI_STATUS Status;
PRM_CONTEXT_BUFFER *PrmContextBuffer;
PRM_DATA_BUFFER *StaticDataBuffer;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
PrmContextBuffer = NULL;
StaticDataBuffer = NULL;
PrmContextBuffer = NULL;
StaticDataBuffer = NULL;
PrmConfigProtocol = NULL;
/*
@ -144,7 +149,7 @@ ContextBufferModuleConfigLibConstructor (
//
Status = GetStaticDataBuffer (&StaticDataBuffer);
ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status) || StaticDataBuffer == NULL) {
if (EFI_ERROR (Status) || (StaticDataBuffer == NULL)) {
goto Done;
}
@ -166,9 +171,10 @@ ContextBufferModuleConfigLibConstructor (
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
CopyGuid (&PrmContextBuffer->HandlerGuid, &mCheckStaticDataBufferPrmHandlerGuid);
PrmContextBuffer->Signature = PRM_CONTEXT_BUFFER_SIGNATURE;
PrmContextBuffer->Version = PRM_CONTEXT_BUFFER_INTERFACE_VERSION;
PrmContextBuffer->Signature = PRM_CONTEXT_BUFFER_SIGNATURE;
PrmContextBuffer->Version = PRM_CONTEXT_BUFFER_INTERFACE_VERSION;
PrmContextBuffer->StaticDataBuffer = StaticDataBuffer;
PrmConfigProtocol = AllocateZeroPool (sizeof (*PrmConfigProtocol));
@ -177,9 +183,10 @@ ContextBufferModuleConfigLibConstructor (
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
CopyGuid (&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid, &mPrmModuleGuid);
PrmConfigProtocol->ModuleContextBuffers.BufferCount = 1;
PrmConfigProtocol->ModuleContextBuffers.Buffer = PrmContextBuffer;
PrmConfigProtocol->ModuleContextBuffers.Buffer = PrmContextBuffer;
//
// Install the PRM Configuration Protocol for this module. This indicates the configuration
@ -189,7 +196,7 @@ ContextBufferModuleConfigLibConstructor (
&mPrmConfigProtocolHandle,
&gPrmConfigProtocolGuid,
EFI_NATIVE_INTERFACE,
(VOID *) PrmConfigProtocol
(VOID *)PrmConfigProtocol
);
Done:
@ -197,9 +204,11 @@ Done:
if (StaticDataBuffer != NULL) {
FreePool (StaticDataBuffer);
}
if (PrmContextBuffer != NULL) {
FreePool (PrmContextBuffer);
}
if (PrmConfigProtocol != NULL) {
FreePool (PrmConfigProtocol);
}

View File

@ -21,7 +21,7 @@
//
// {e1466081-7562-430f-896b-b0e523dc335a}
#define CHECK_STATIC_DATA_BUFFER_PRM_HANDLER_GUID {0xe1466081, 0x7562, 0x430f, {0x89, 0x6b, 0xb0, 0xe5, 0x23, 0xdc, 0x33, 0x5a}}
#define CHECK_STATIC_DATA_BUFFER_PRM_HANDLER_GUID {0xe1466081, 0x7562, 0x430f, {0x89, 0x6b, 0xb0, 0xe5, 0x23, 0xdc, 0x33, 0x5a}}
/**
A sample Platform Runtime Mechanism (PRM) handler.
@ -35,8 +35,7 @@
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (CheckStaticDataBufferPrmHandler)
{
PRM_HANDLER_EXPORT (CheckStaticDataBufferPrmHandler) {
if (ContextBuffer == NULL) {
return EFI_INVALID_PARAMETER;
}
@ -49,8 +48,9 @@ PRM_HANDLER_EXPORT (CheckStaticDataBufferPrmHandler)
// Verify PRM data buffer signature is valid
//
if (
ContextBuffer->Signature != PRM_CONTEXT_BUFFER_SIGNATURE ||
ContextBuffer->StaticDataBuffer->Header.Signature != PRM_DATA_BUFFER_HEADER_SIGNATURE) {
(ContextBuffer->Signature != PRM_CONTEXT_BUFFER_SIGNATURE) ||
(ContextBuffer->StaticDataBuffer->Header.Signature != PRM_DATA_BUFFER_HEADER_SIGNATURE))
{
return EFI_NOT_FOUND;
}
@ -76,8 +76,8 @@ PRM_MODULE_EXPORT (
EFI_STATUS
EFIAPI
PrmSampleContextBufferModuleInit (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return EFI_SUCCESS;

View File

@ -15,8 +15,8 @@
#ifndef HPET_REGISTER_H_
#define HPET_REGISTER_H_
#define HPET_BASE_ADDRESS 0xFED00000
#define HPET_RANGE_LENGTH 0x1000
#define HPET_BASE_ADDRESS 0xFED00000
#define HPET_RANGE_LENGTH 0x1000
///
/// HPET General Register Offsets
@ -28,15 +28,15 @@
///
/// HPET Timer Register Offsets
///
#define HPET_MAIN_COUNTER_OFFSET 0x0F0
#define HPET_TIMER_CONFIGURATION_OFFSET 0x100
#define HPET_TIMER_COMPARATOR_OFFSET 0x108
#define HPET_TIMER_MSI_ROUTE_OFFSET 0x110
#define HPET_MAIN_COUNTER_OFFSET 0x0F0
#define HPET_TIMER_CONFIGURATION_OFFSET 0x100
#define HPET_TIMER_COMPARATOR_OFFSET 0x108
#define HPET_TIMER_MSI_ROUTE_OFFSET 0x110
///
/// Stride between sets of HPET Timer Registers
///
#define HPET_TIMER_STRIDE 0x20
#define HPET_TIMER_STRIDE 0x20
#pragma pack(1)
@ -45,15 +45,15 @@
///
typedef union {
struct {
UINT32 Revision:8;
UINT32 NumberOfTimers:5;
UINT32 CounterSize:1;
UINT32 Reserved0:1;
UINT32 LegacyRoute:1;
UINT32 VendorId:16;
UINT32 CounterClockPeriod:32;
UINT32 Revision : 8;
UINT32 NumberOfTimers : 5;
UINT32 CounterSize : 1;
UINT32 Reserved0 : 1;
UINT32 LegacyRoute : 1;
UINT32 VendorId : 16;
UINT32 CounterClockPeriod : 32;
} Bits;
UINT64 Uint64;
UINT64 Uint64;
} HPET_GENERAL_CAPABILITIES_ID_REGISTER;
///
@ -61,12 +61,12 @@ typedef union {
///
typedef union {
struct {
UINT32 MainCounterEnable:1;
UINT32 LegacyRouteEnable:1;
UINT32 Reserved0:30;
UINT32 Reserved1:32;
UINT32 MainCounterEnable : 1;
UINT32 LegacyRouteEnable : 1;
UINT32 Reserved0 : 30;
UINT32 Reserved1 : 32;
} Bits;
UINT64 Uint64;
UINT64 Uint64;
} HPET_GENERAL_CONFIGURATION_REGISTER;
///
@ -74,22 +74,22 @@ typedef union {
///
typedef union {
struct {
UINT32 Reserved0:1;
UINT32 LevelTriggeredInterrupt:1;
UINT32 InterruptEnable:1;
UINT32 PeriodicInterruptEnable:1;
UINT32 PeriodicInterruptCapability:1;
UINT32 CounterSizeCapability:1;
UINT32 ValueSetEnable:1;
UINT32 Reserved1:1;
UINT32 CounterSizeEnable:1;
UINT32 InterruptRoute:5;
UINT32 MsiInterruptEnable:1;
UINT32 MsiInterruptCapability:1;
UINT32 Reserved2:16;
UINT32 InterruptRouteCapability;
UINT32 Reserved0 : 1;
UINT32 LevelTriggeredInterrupt : 1;
UINT32 InterruptEnable : 1;
UINT32 PeriodicInterruptEnable : 1;
UINT32 PeriodicInterruptCapability : 1;
UINT32 CounterSizeCapability : 1;
UINT32 ValueSetEnable : 1;
UINT32 Reserved1 : 1;
UINT32 CounterSizeEnable : 1;
UINT32 InterruptRoute : 5;
UINT32 MsiInterruptEnable : 1;
UINT32 MsiInterruptCapability : 1;
UINT32 Reserved2 : 16;
UINT32 InterruptRouteCapability;
} Bits;
UINT64 Uint64;
UINT64 Uint64;
} HPET_TIMER_CONFIGURATION_REGISTER;
///
@ -97,10 +97,10 @@ typedef union {
///
typedef union {
struct {
UINT32 Value:32;
UINT32 Address:32;
UINT32 Value : 32;
UINT32 Address : 32;
} Bits;
UINT64 Uint64;
UINT64 Uint64;
} HPET_TIMER_MSI_ROUTE_REGISTER;
#pragma pack()

View File

@ -18,7 +18,9 @@
STATIC EFI_HANDLE mPrmConfigProtocolHandle;
// {0ef93ed7-14ae-425b-928f-b85a6213b57e}
STATIC CONST EFI_GUID mPrmModuleGuid = {0x0ef93ed7, 0x14ae, 0x425b, {0x92, 0x8f, 0xb8, 0x5a, 0x62, 0x13, 0xb5, 0x7e}};
STATIC CONST EFI_GUID mPrmModuleGuid = {
0x0ef93ed7, 0x14ae, 0x425b, { 0x92, 0x8f, 0xb8, 0x5a, 0x62, 0x13, 0xb5, 0x7e }
};
/**
Constructor of the PRM configuration library.
@ -32,13 +34,13 @@ STATIC CONST EFI_GUID mPrmModuleGuid = {0x0ef93ed7, 0x14ae, 0x425b, {0x92, 0x8f,
EFI_STATUS
EFIAPI
HardwareAccessModuleConfigLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
EFI_STATUS Status;
PRM_RUNTIME_MMIO_RANGES *RuntimeMmioRanges;
PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
RuntimeMmioRanges = NULL;
PrmConfigProtocol = NULL;
@ -70,12 +72,13 @@ HardwareAccessModuleConfigLibConstructor (
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
CopyGuid (&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid, &mPrmModuleGuid);
// Populate the Runtime MMIO Ranges structure
RuntimeMmioRanges->Count = 1;
RuntimeMmioRanges->Count = 1;
RuntimeMmioRanges->Range[0].PhysicalBaseAddress = HPET_BASE_ADDRESS;
RuntimeMmioRanges->Range[0].Length = HPET_RANGE_LENGTH;
RuntimeMmioRanges->Range[0].Length = HPET_RANGE_LENGTH;
PrmConfigProtocol->ModuleContextBuffers.RuntimeMmioRanges = RuntimeMmioRanges;
@ -87,7 +90,7 @@ HardwareAccessModuleConfigLibConstructor (
&mPrmConfigProtocolHandle,
&gPrmConfigProtocolGuid,
EFI_NATIVE_INTERFACE,
(VOID *) PrmConfigProtocol
(VOID *)PrmConfigProtocol
);
Done:
@ -95,6 +98,7 @@ Done:
if (RuntimeMmioRanges != NULL) {
FreePool (RuntimeMmioRanges);
}
if (PrmConfigProtocol != NULL) {
FreePool (PrmConfigProtocol);
}

View File

@ -24,18 +24,18 @@
//
// {2120cd3c-848b-4d8f-abbb-4b74ce64ac89}
#define MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID {0x2120cd3c, 0x848b, 0x4d8f, {0xab, 0xbb, 0x4b, 0x74, 0xce, 0x64, 0xac, 0x89}}
#define MSR_ACCESS_MICROCODE_SIGNATURE_PRM_HANDLER_GUID {0x2120cd3c, 0x848b, 0x4d8f, {0xab, 0xbb, 0x4b, 0x74, 0xce, 0x64, 0xac, 0x89}}
// {ea0935a7-506b-4159-bbbb-48deeecb6f58}
#define MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID {0xea0935a7, 0x506b, 0x4159, {0xbb, 0xbb, 0x48, 0xde, 0xee, 0xcb, 0x6f, 0x58}}
#define MSR_ACCESS_MTRR_DUMP_PRM_HANDLER_GUID {0xea0935a7, 0x506b, 0x4159, {0xbb, 0xbb, 0x48, 0xde, 0xee, 0xcb, 0x6f, 0x58}}
// {1bd1bda9-909a-4614-9699-25ec0c2783f7}
#define MMIO_ACCESS_HPET_PRM_HANDLER_GUID {0x1bd1bda9, 0x909a, 0x4614, {0x96, 0x99, 0x25, 0xec, 0x0c, 0x27, 0x83, 0xf7}}
#define MMIO_ACCESS_HPET_PRM_HANDLER_GUID {0x1bd1bda9, 0x909a, 0x4614, {0x96, 0x99, 0x25, 0xec, 0x0c, 0x27, 0x83, 0xf7}}
//
// BEGIN: MtrrLib internal library globals and function prototypes here for testing
//
extern CONST CHAR8 *mMtrrMemoryCacheTypeShortName[];
extern CONST CHAR8 *mMtrrMemoryCacheTypeShortName[];
/**
Initializes the valid bits mask and valid address mask for MTRRs.
@ -48,8 +48,8 @@ extern CONST CHAR8 *mMtrrMemoryCacheTypeShortName[];
**/
VOID
MtrrLibInitializeMtrrMask (
OUT UINT64 *MtrrValidBitsMask,
OUT UINT64 *MtrrValidAddressMask
OUT UINT64 *MtrrValidBitsMask,
OUT UINT64 *MtrrValidAddressMask
);
/**
@ -109,11 +109,11 @@ MtrrLibApplyFixedMtrrs (
**/
RETURN_STATUS
MtrrLibApplyVariableMtrrs (
IN CONST MTRR_MEMORY_RANGE *VariableMtrr,
IN UINT32 VariableMtrrCount,
IN OUT MTRR_MEMORY_RANGE *Ranges,
IN UINTN RangeCapacity,
IN OUT UINTN *RangeCount
IN CONST MTRR_MEMORY_RANGE *VariableMtrr,
IN UINT32 VariableMtrrCount,
IN OUT MTRR_MEMORY_RANGE *Ranges,
IN UINTN RangeCapacity,
IN OUT UINTN *RangeCount
);
//
@ -130,17 +130,17 @@ AccessAllMtrrs (
VOID
)
{
MTRR_SETTINGS LocalMtrrs;
MTRR_SETTINGS *Mtrrs;
UINTN RangeCount;
UINT64 MtrrValidBitsMask;
UINT64 MtrrValidAddressMask;
UINT32 VariableMtrrCount;
MTRR_SETTINGS LocalMtrrs;
MTRR_SETTINGS *Mtrrs;
UINTN RangeCount;
UINT64 MtrrValidBitsMask;
UINT64 MtrrValidAddressMask;
UINT32 VariableMtrrCount;
MTRR_MEMORY_RANGE Ranges[
MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1
];
MTRR_MEMORY_RANGE RawVariableRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];
MTRR_MEMORY_RANGE Ranges[
MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1
];
MTRR_MEMORY_RANGE RawVariableRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];
if (!IsMtrrSupported ()) {
return;
@ -155,15 +155,21 @@ AccessAllMtrrs (
Ranges[0].BaseAddress = 0;
Ranges[0].Length = MtrrValidBitsMask + 1;
Ranges[0].Type = MtrrGetDefaultMemoryType ();
RangeCount = 1;
RangeCount = 1;
MtrrLibGetRawVariableRanges (
&Mtrrs->Variables, VariableMtrrCount,
MtrrValidBitsMask, MtrrValidAddressMask, RawVariableRanges
&Mtrrs->Variables,
VariableMtrrCount,
MtrrValidBitsMask,
MtrrValidAddressMask,
RawVariableRanges
);
MtrrLibApplyVariableMtrrs (
RawVariableRanges, VariableMtrrCount,
Ranges, ARRAY_SIZE (Ranges), &RangeCount
RawVariableRanges,
VariableMtrrCount,
Ranges,
ARRAY_SIZE (Ranges),
&RangeCount
);
MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount);
@ -187,11 +193,11 @@ AccessAllMtrrs (
UINT64
EFIAPI
HpetRead (
IN UINTN Offset
IN UINTN Offset
)
{
UINTN Address;
UINT64 Value;
UINTN Address;
UINT64 Value;
Address = HPET_BASE_ADDRESS + Offset;
@ -200,7 +206,7 @@ HpetRead (
}
MemoryFence ();
Value = *(volatile UINT64*)Address;
Value = *(volatile UINT64 *)Address;
MemoryFence ();
return Value;
@ -251,8 +257,7 @@ GetMicrocodeSignature (
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MsrAccessMicrocodeSignaturePrmHandler)
{
PRM_HANDLER_EXPORT (MsrAccessMicrocodeSignaturePrmHandler) {
UINT32 MicrocodeSignature;
MicrocodeSignature = 0;
@ -277,8 +282,7 @@ PRM_HANDLER_EXPORT (MsrAccessMicrocodeSignaturePrmHandler)
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MsrAccessMtrrDumpPrmHandler)
{
PRM_HANDLER_EXPORT (MsrAccessMtrrDumpPrmHandler) {
AccessAllMtrrs ();
return EFI_SUCCESS;
@ -296,8 +300,7 @@ PRM_HANDLER_EXPORT (MsrAccessMtrrDumpPrmHandler)
@retval Others An error occurred in the PRM handler.
**/
PRM_HANDLER_EXPORT (MmioAccessHpetPrmHandler)
{
PRM_HANDLER_EXPORT (MmioAccessHpetPrmHandler) {
AccessHpetConfiguration ();
return EFI_SUCCESS;
@ -324,8 +327,8 @@ PRM_MODULE_EXPORT (
EFI_STATUS
EFIAPI
PrmSampleHardwareAccessModuleInit (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
return EFI_SUCCESS;

View File

@ -16,10 +16,10 @@
#include "UefiBootServicesTableLibUnitTest.h"
EFI_HANDLE gImageHandle = NULL;
EFI_SYSTEM_TABLE *gST = NULL;
EFI_HANDLE gImageHandle = NULL;
EFI_SYSTEM_TABLE *gST = NULL;
STATIC EFI_BOOT_SERVICES mBootServices = {
STATIC EFI_BOOT_SERVICES mBootServices = {
{
EFI_BOOT_SERVICES_SIGNATURE, // Signature
EFI_BOOT_SERVICES_REVISION, // Revision
@ -27,50 +27,50 @@ STATIC EFI_BOOT_SERVICES mBootServices = {
0, // CRC32
0 // Reserved
},
(EFI_RAISE_TPL) UnitTestRaiseTpl, // RaiseTPL
(EFI_RESTORE_TPL) UnitTestRestoreTpl, // RestoreTPL
(EFI_ALLOCATE_PAGES) UnitTestAllocatePages, // AllocatePages
(EFI_FREE_PAGES) UnitTestFreePages, // FreePages
(EFI_GET_MEMORY_MAP) UnitTestGetMemoryMap, // GetMemoryMap
(EFI_ALLOCATE_POOL) UnitTestAllocatePool, // AllocatePool
(EFI_FREE_POOL) UnitTestFreePool, // FreePool
(EFI_CREATE_EVENT) UnitTestCreateEvent, // CreateEvent
(EFI_SET_TIMER) UnitTestSetTimer, // SetTimer
(EFI_WAIT_FOR_EVENT) UnitTestWaitForEvent, // WaitForEvent
(EFI_SIGNAL_EVENT) UnitTestSignalEvent, // SignalEvent
(EFI_CLOSE_EVENT) UnitTestCloseEvent, // CloseEvent
(EFI_CHECK_EVENT) UnitTestCheckEvent, // CheckEvent
(EFI_INSTALL_PROTOCOL_INTERFACE) UnitTestInstallProtocolInterface, // InstallProtocolInterface
(EFI_REINSTALL_PROTOCOL_INTERFACE) UnitTestReinstallProtocolInterface, // ReinstallProtocolInterface
(EFI_UNINSTALL_PROTOCOL_INTERFACE) UnitTestUninstallProtocolInterface, // UninstallProtocolInterface
(EFI_HANDLE_PROTOCOL) UnitTestHandleProtocol, // HandleProtocol
(VOID *) NULL, // Reserved
(EFI_REGISTER_PROTOCOL_NOTIFY) UnitTestRegisterProtocolNotify, // RegisterProtocolNotify
(EFI_LOCATE_HANDLE) UnitTestLocateHandle, // LocateHandle
(EFI_LOCATE_DEVICE_PATH) UnitTestLocateDevicePath, // LocateDevicePath
(EFI_INSTALL_CONFIGURATION_TABLE) UnitTestInstallConfigurationTable, // InstallConfigurationTable
(EFI_IMAGE_LOAD) UnitTestLoadImage, // LoadImage
(EFI_IMAGE_START) UnitTestStartImage, // StartImage
(EFI_EXIT) UnitTestExit, // Exit
(EFI_IMAGE_UNLOAD) UnitTestUnloadImage, // UnloadImage
(EFI_EXIT_BOOT_SERVICES) UnitTestExitBootServices, // ExitBootServices
(EFI_GET_NEXT_MONOTONIC_COUNT) UnitTestGetNextMonotonicCount, // GetNextMonotonicCount
(EFI_STALL) UnitTestStall, // Stall
(EFI_SET_WATCHDOG_TIMER) UnitTestSetWatchdogTimer, // SetWatchdogTimer
(EFI_CONNECT_CONTROLLER) UnitTestConnectController, // ConnectController
(EFI_DISCONNECT_CONTROLLER) UnitTestDisconnectController, // DisconnectController
(EFI_OPEN_PROTOCOL) UnitTestOpenProtocol, // OpenProtocol
(EFI_CLOSE_PROTOCOL) UnitTestCloseProtocol, // CloseProtocol
(EFI_OPEN_PROTOCOL_INFORMATION) UnitTestOpenProtocolInformation, // OpenProtocolInformation
(EFI_PROTOCOLS_PER_HANDLE) UnitTestProtocolsPerHandle, // ProtocolsPerHandle
(EFI_LOCATE_HANDLE_BUFFER) UnitTestLocateHandleBuffer, // LocateHandleBuffer
(EFI_LOCATE_PROTOCOL) UnitTestLocateProtocol, // LocateProtocol
(EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) UnitTestInstallMultipleProtocolInterfaces, // InstallMultipleProtocolInterfaces
(EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) UnitTestUninstallMultipleProtocolInterfaces, // UninstallMultipleProtocolInterfaces
(EFI_CALCULATE_CRC32) UnitTestCalculateCrc32, // CalculateCrc32
(EFI_COPY_MEM) CopyMem, // CopyMem
(EFI_SET_MEM) SetMem, // SetMem
(EFI_CREATE_EVENT_EX) UnitTestCreateEventEx // CreateEventEx
(EFI_RAISE_TPL)UnitTestRaiseTpl, // RaiseTPL
(EFI_RESTORE_TPL)UnitTestRestoreTpl, // RestoreTPL
(EFI_ALLOCATE_PAGES)UnitTestAllocatePages, // AllocatePages
(EFI_FREE_PAGES)UnitTestFreePages, // FreePages
(EFI_GET_MEMORY_MAP)UnitTestGetMemoryMap, // GetMemoryMap
(EFI_ALLOCATE_POOL)UnitTestAllocatePool, // AllocatePool
(EFI_FREE_POOL)UnitTestFreePool, // FreePool
(EFI_CREATE_EVENT)UnitTestCreateEvent, // CreateEvent
(EFI_SET_TIMER)UnitTestSetTimer, // SetTimer
(EFI_WAIT_FOR_EVENT)UnitTestWaitForEvent, // WaitForEvent
(EFI_SIGNAL_EVENT)UnitTestSignalEvent, // SignalEvent
(EFI_CLOSE_EVENT)UnitTestCloseEvent, // CloseEvent
(EFI_CHECK_EVENT)UnitTestCheckEvent, // CheckEvent
(EFI_INSTALL_PROTOCOL_INTERFACE)UnitTestInstallProtocolInterface, // InstallProtocolInterface
(EFI_REINSTALL_PROTOCOL_INTERFACE)UnitTestReinstallProtocolInterface, // ReinstallProtocolInterface
(EFI_UNINSTALL_PROTOCOL_INTERFACE)UnitTestUninstallProtocolInterface, // UninstallProtocolInterface
(EFI_HANDLE_PROTOCOL)UnitTestHandleProtocol, // HandleProtocol
(VOID *)NULL, // Reserved
(EFI_REGISTER_PROTOCOL_NOTIFY)UnitTestRegisterProtocolNotify, // RegisterProtocolNotify
(EFI_LOCATE_HANDLE)UnitTestLocateHandle, // LocateHandle
(EFI_LOCATE_DEVICE_PATH)UnitTestLocateDevicePath, // LocateDevicePath
(EFI_INSTALL_CONFIGURATION_TABLE)UnitTestInstallConfigurationTable, // InstallConfigurationTable
(EFI_IMAGE_LOAD)UnitTestLoadImage, // LoadImage
(EFI_IMAGE_START)UnitTestStartImage, // StartImage
(EFI_EXIT)UnitTestExit, // Exit
(EFI_IMAGE_UNLOAD)UnitTestUnloadImage, // UnloadImage
(EFI_EXIT_BOOT_SERVICES)UnitTestExitBootServices, // ExitBootServices
(EFI_GET_NEXT_MONOTONIC_COUNT)UnitTestGetNextMonotonicCount, // GetNextMonotonicCount
(EFI_STALL)UnitTestStall, // Stall
(EFI_SET_WATCHDOG_TIMER)UnitTestSetWatchdogTimer, // SetWatchdogTimer
(EFI_CONNECT_CONTROLLER)UnitTestConnectController, // ConnectController
(EFI_DISCONNECT_CONTROLLER)UnitTestDisconnectController, // DisconnectController
(EFI_OPEN_PROTOCOL)UnitTestOpenProtocol, // OpenProtocol
(EFI_CLOSE_PROTOCOL)UnitTestCloseProtocol, // CloseProtocol
(EFI_OPEN_PROTOCOL_INFORMATION)UnitTestOpenProtocolInformation, // OpenProtocolInformation
(EFI_PROTOCOLS_PER_HANDLE)UnitTestProtocolsPerHandle, // ProtocolsPerHandle
(EFI_LOCATE_HANDLE_BUFFER)UnitTestLocateHandleBuffer, // LocateHandleBuffer
(EFI_LOCATE_PROTOCOL)UnitTestLocateProtocol, // LocateProtocol
(EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)UnitTestInstallMultipleProtocolInterfaces, // InstallMultipleProtocolInterfaces
(EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)UnitTestUninstallMultipleProtocolInterfaces, // UninstallMultipleProtocolInterfaces
(EFI_CALCULATE_CRC32)UnitTestCalculateCrc32, // CalculateCrc32
(EFI_COPY_MEM)CopyMem, // CopyMem
(EFI_SET_MEM)SetMem, // SetMem
(EFI_CREATE_EVENT_EX)UnitTestCreateEventEx // CreateEventEx
};
EFI_BOOT_SERVICES *gBS = &mBootServices;

View File

@ -34,11 +34,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_TPL
EFIAPI
UnitTestRaiseTpl (
IN EFI_TPL NewTpl
IN EFI_TPL NewTpl
);
/**
Lowers the task priority to the previous value. If the new
priority unmasks events at a higher priority, they are dispatched.
@ -49,7 +47,7 @@ UnitTestRaiseTpl (
VOID
EFIAPI
UnitTestRestoreTpl (
IN EFI_TPL NewTpl
IN EFI_TPL NewTpl
);
/**
@ -73,9 +71,9 @@ UnitTestRestoreTpl (
EFI_STATUS
EFIAPI
UnitTestAllocatePages (
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN NumberOfPages,
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN NumberOfPages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory
);
@ -93,8 +91,8 @@ UnitTestAllocatePages (
EFI_STATUS
EFIAPI
UnitTestFreePages (
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN NumberOfPages
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN NumberOfPages
);
/**
@ -137,8 +135,6 @@ UnitTestGetMemoryMap (
OUT UINT32 *DescriptorVersion
);
/**
Allocate pool of a particular type.
@ -172,7 +168,7 @@ UnitTestAllocatePool (
EFI_STATUS
EFIAPI
UnitTestFreePool (
IN VOID *Buffer
IN VOID *Buffer
);
/**
@ -188,8 +184,8 @@ UnitTestFreePool (
EFI_STATUS
EFIAPI
UnitTestInternalFreePool (
IN VOID *Buffer,
OUT EFI_MEMORY_TYPE *PoolType OPTIONAL
IN VOID *Buffer,
OUT EFI_MEMORY_TYPE *PoolType OPTIONAL
);
/**
@ -213,9 +209,9 @@ UnitTestInternalFreePool (
EFI_STATUS
EFIAPI
UnitTestCreateEvent (
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN VOID *NotifyContext, OPTIONAL
OUT EFI_EVENT *Event
);
@ -238,9 +234,9 @@ UnitTestCreateEvent (
EFI_STATUS
EFIAPI
UnitTestSetTimer (
IN EFI_EVENT UserEvent,
IN EFI_TIMER_DELAY Type,
IN UINT64 TriggerTime
IN EFI_EVENT UserEvent,
IN EFI_TIMER_DELAY Type,
IN UINT64 TriggerTime
);
/**
@ -260,9 +256,9 @@ UnitTestSetTimer (
EFI_STATUS
EFIAPI
UnitTestWaitForEvent (
IN UINTN NumberOfEvents,
IN EFI_EVENT *UserEvents,
OUT UINTN *UserIndex
IN UINTN NumberOfEvents,
IN EFI_EVENT *UserEvents,
OUT UINTN *UserIndex
);
/**
@ -277,7 +273,7 @@ UnitTestWaitForEvent (
EFI_STATUS
EFIAPI
UnitTestSignalEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
);
/**
@ -292,7 +288,7 @@ UnitTestSignalEvent (
EFI_STATUS
EFIAPI
UnitTestCloseEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
);
/**
@ -308,7 +304,7 @@ UnitTestCloseEvent (
EFI_STATUS
EFIAPI
UnitTestCheckEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
);
/**
@ -328,10 +324,10 @@ UnitTestCheckEvent (
EFI_STATUS
EFIAPI
UnitTestInstallProtocolInterface (
IN OUT EFI_HANDLE *UserHandle,
IN EFI_GUID *Protocol,
IN EFI_INTERFACE_TYPE InterfaceType,
IN VOID *Interface
IN OUT EFI_HANDLE *UserHandle,
IN EFI_GUID *Protocol,
IN EFI_INTERFACE_TYPE InterfaceType,
IN VOID *Interface
);
/**
@ -351,10 +347,10 @@ UnitTestInstallProtocolInterface (
EFI_STATUS
EFIAPI
UnitTestReinstallProtocolInterface (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN VOID *OldInterface,
IN VOID *NewInterface
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN VOID *OldInterface,
IN VOID *NewInterface
);
/**
@ -373,9 +369,9 @@ UnitTestReinstallProtocolInterface (
EFI_STATUS
EFIAPI
UnitTestUninstallProtocolInterface (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN VOID *Interface
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN VOID *Interface
);
/**
@ -392,9 +388,9 @@ UnitTestUninstallProtocolInterface (
EFI_STATUS
EFIAPI
UnitTestHandleProtocol (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT VOID **Interface
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT VOID **Interface
);
/**
@ -413,9 +409,9 @@ UnitTestHandleProtocol (
EFI_STATUS
EFIAPI
UnitTestRegisterProtocolNotify (
IN EFI_GUID *Protocol,
IN EFI_EVENT Event,
OUT VOID **Registration
IN EFI_GUID *Protocol,
IN EFI_EVENT Event,
OUT VOID **Registration
);
/**
@ -439,11 +435,11 @@ UnitTestRegisterProtocolNotify (
EFI_STATUS
EFIAPI
UnitTestLocateHandle (
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol OPTIONAL,
IN VOID *SearchKey OPTIONAL,
IN OUT UINTN *BufferSize,
OUT EFI_HANDLE *Buffer
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol OPTIONAL,
IN VOID *SearchKey OPTIONAL,
IN OUT UINTN *BufferSize,
OUT EFI_HANDLE *Buffer
);
/**
@ -464,9 +460,9 @@ UnitTestLocateHandle (
EFI_STATUS
EFIAPI
UnitTestLocateDevicePath (
IN EFI_GUID *Protocol,
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
OUT EFI_HANDLE *Device
IN EFI_GUID *Protocol,
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
OUT EFI_HANDLE *Device
);
/**
@ -487,8 +483,8 @@ UnitTestLocateDevicePath (
EFI_STATUS
EFIAPI
UnitTestInstallConfigurationTable (
IN EFI_GUID *Guid,
IN VOID *Table
IN EFI_GUID *Guid,
IN VOID *Table
);
/**
@ -528,12 +524,12 @@ UnitTestInstallConfigurationTable (
EFI_STATUS
EFIAPI
UnitTestLoadImage (
IN BOOLEAN BootPolicy,
IN EFI_HANDLE ParentImageHandle,
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
IN VOID *SourceBuffer OPTIONAL,
IN UINTN SourceSize,
OUT EFI_HANDLE *ImageHandle
IN BOOLEAN BootPolicy,
IN EFI_HANDLE ParentImageHandle,
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
IN VOID *SourceBuffer OPTIONAL,
IN UINTN SourceSize,
OUT EFI_HANDLE *ImageHandle
);
/**
@ -626,8 +622,8 @@ UnitTestUnloadImage (
EFI_STATUS
EFIAPI
UnitTestExitBootServices (
IN EFI_HANDLE ImageHandle,
IN UINTN MapKey
IN EFI_HANDLE ImageHandle,
IN UINTN MapKey
);
/**
@ -643,7 +639,7 @@ UnitTestExitBootServices (
EFI_STATUS
EFIAPI
UnitTestGetNextMonotonicCount (
OUT UINT64 *Count
OUT UINT64 *Count
);
/**
@ -659,7 +655,7 @@ UnitTestGetNextMonotonicCount (
EFI_STATUS
EFIAPI
UnitTestStall (
IN UINTN Microseconds
IN UINTN Microseconds
);
/**
@ -687,10 +683,10 @@ UnitTestStall (
EFI_STATUS
EFIAPI
UnitTestSetWatchdogTimer (
IN UINTN Timeout,
IN UINT64 WatchdogCode,
IN UINTN DataSize,
IN CHAR16 *WatchdogData OPTIONAL
IN UINTN Timeout,
IN UINT64 WatchdogCode,
IN UINTN DataSize,
IN CHAR16 *WatchdogData OPTIONAL
);
/**
@ -791,12 +787,12 @@ UnitTestDisconnectController (
EFI_STATUS
EFIAPI
UnitTestOpenProtocol (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT VOID **Interface OPTIONAL,
IN EFI_HANDLE ImageHandle,
IN EFI_HANDLE ControllerHandle,
IN UINT32 Attributes
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT VOID **Interface OPTIONAL,
IN EFI_HANDLE ImageHandle,
IN EFI_HANDLE ControllerHandle,
IN UINT32 Attributes
);
/**
@ -827,10 +823,10 @@ UnitTestOpenProtocol (
EFI_STATUS
EFIAPI
UnitTestCloseProtocol (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN EFI_HANDLE AgentHandle,
IN EFI_HANDLE ControllerHandle
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
IN EFI_HANDLE AgentHandle,
IN EFI_HANDLE ControllerHandle
);
/**
@ -847,10 +843,10 @@ UnitTestCloseProtocol (
EFI_STATUS
EFIAPI
UnitTestOpenProtocolInformation (
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
OUT UINTN *EntryCount
IN EFI_HANDLE UserHandle,
IN EFI_GUID *Protocol,
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
OUT UINTN *EntryCount
);
/**
@ -879,9 +875,9 @@ UnitTestOpenProtocolInformation (
EFI_STATUS
EFIAPI
UnitTestProtocolsPerHandle (
IN EFI_HANDLE UserHandle,
OUT EFI_GUID ***ProtocolBuffer,
OUT UINTN *ProtocolBufferCount
IN EFI_HANDLE UserHandle,
OUT EFI_GUID ***ProtocolBuffer,
OUT UINTN *ProtocolBufferCount
);
/**
@ -909,11 +905,11 @@ UnitTestProtocolsPerHandle (
EFI_STATUS
EFIAPI
UnitTestLocateHandleBuffer (
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol OPTIONAL,
IN VOID *SearchKey OPTIONAL,
IN OUT UINTN *NumberHandles,
OUT EFI_HANDLE **Buffer
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol OPTIONAL,
IN VOID *SearchKey OPTIONAL,
IN OUT UINTN *NumberHandles,
OUT EFI_HANDLE **Buffer
);
/**
@ -964,7 +960,7 @@ UnitTestLocateProtocol (
EFI_STATUS
EFIAPI
UnitTestInstallMultipleProtocolInterfaces (
IN OUT EFI_HANDLE *Handle,
IN OUT EFI_HANDLE *Handle,
...
);
@ -985,7 +981,7 @@ UnitTestInstallMultipleProtocolInterfaces (
EFI_STATUS
EFIAPI
UnitTestUninstallMultipleProtocolInterfaces (
IN EFI_HANDLE Handle,
IN EFI_HANDLE Handle,
...
);
@ -1007,9 +1003,9 @@ UnitTestUninstallMultipleProtocolInterfaces (
EFI_STATUS
EFIAPI
UnitTestCalculateCrc32 (
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *Crc32
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *Crc32
);
/**
@ -1035,11 +1031,11 @@ UnitTestCalculateCrc32 (
EFI_STATUS
EFIAPI
UnitTestCreateEventEx (
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN CONST VOID *NotifyContext, OPTIONAL
IN CONST EFI_GUID *EventGroup, OPTIONAL
IN CONST EFI_GUID *EventGroup, OPTIONAL
OUT EFI_EVENT *Event
);

View File

@ -29,9 +29,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS
EFIAPI
UnitTestCreateEvent (
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN VOID *NotifyContext, OPTIONAL
OUT EFI_EVENT *Event
)
@ -57,9 +57,9 @@ UnitTestCreateEvent (
EFI_STATUS
EFIAPI
UnitTestSetTimer (
IN EFI_EVENT UserEvent,
IN EFI_TIMER_DELAY Type,
IN UINT64 TriggerTime
IN EFI_EVENT UserEvent,
IN EFI_TIMER_DELAY Type,
IN UINT64 TriggerTime
)
{
return EFI_NOT_AVAILABLE_YET;
@ -82,9 +82,9 @@ UnitTestSetTimer (
EFI_STATUS
EFIAPI
UnitTestWaitForEvent (
IN UINTN NumberOfEvents,
IN EFI_EVENT *UserEvents,
OUT UINTN *UserIndex
IN UINTN NumberOfEvents,
IN EFI_EVENT *UserEvents,
OUT UINTN *UserIndex
)
{
return EFI_NOT_AVAILABLE_YET;
@ -102,7 +102,7 @@ UnitTestWaitForEvent (
EFI_STATUS
EFIAPI
UnitTestSignalEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
)
{
return EFI_NOT_AVAILABLE_YET;
@ -120,7 +120,7 @@ UnitTestSignalEvent (
EFI_STATUS
EFIAPI
UnitTestCloseEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
)
{
return EFI_NOT_AVAILABLE_YET;
@ -139,7 +139,7 @@ UnitTestCloseEvent (
EFI_STATUS
EFIAPI
UnitTestCheckEvent (
IN EFI_EVENT UserEvent
IN EFI_EVENT UserEvent
)
{
return EFI_NOT_AVAILABLE_YET;
@ -168,11 +168,11 @@ UnitTestCheckEvent (
EFI_STATUS
EFIAPI
UnitTestCreateEventEx (
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN CONST VOID *NotifyContext, OPTIONAL
IN CONST EFI_GUID *EventGroup, OPTIONAL
IN CONST EFI_GUID *EventGroup, OPTIONAL
OUT EFI_EVENT *Event
)
{

View File

@ -45,12 +45,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS
EFIAPI
UnitTestLoadImage (
IN BOOLEAN BootPolicy,
IN EFI_HANDLE ParentImageHandle,
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
IN VOID *SourceBuffer OPTIONAL,
IN UINTN SourceSize,
OUT EFI_HANDLE *ImageHandle
IN BOOLEAN BootPolicy,
IN EFI_HANDLE ParentImageHandle,
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
IN VOID *SourceBuffer OPTIONAL,
IN UINTN SourceSize,
OUT EFI_HANDLE *ImageHandle
)
{
return EFI_NOT_AVAILABLE_YET;
@ -155,8 +155,8 @@ UnitTestUnloadImage (
EFI_STATUS
EFIAPI
UnitTestExitBootServices (
IN EFI_HANDLE ImageHandle,
IN UINTN MapKey
IN EFI_HANDLE ImageHandle,
IN UINTN MapKey
)
{
return EFI_NOT_AVAILABLE_YET;

View File

@ -29,9 +29,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS
EFIAPI
UnitTestAllocatePages (
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN NumberOfPages,
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN NumberOfPages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory
)
{
@ -52,8 +52,8 @@ UnitTestAllocatePages (
EFI_STATUS
EFIAPI
UnitTestFreePages (
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN NumberOfPages
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN NumberOfPages
)
{
return EFI_NOT_AVAILABLE_YET;
@ -138,7 +138,7 @@ UnitTestAllocatePool (
EFI_STATUS
EFIAPI
UnitTestFreePool (
IN VOID *Buffer
IN VOID *Buffer
)
{
return EFI_NOT_AVAILABLE_YET;

View File

@ -21,7 +21,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_STATUS
EFIAPI
UnitTestGetNextMonotonicCount (
OUT UINT64 *Count
OUT UINT64 *Count
)
{
STATIC UINT64 StaticCount = 0;
@ -44,7 +44,7 @@ UnitTestGetNextMonotonicCount (
EFI_STATUS
EFIAPI
UnitTestStall (
IN UINTN Microseconds
IN UINTN Microseconds
)
{
return EFI_NOT_AVAILABLE_YET;
@ -75,10 +75,10 @@ UnitTestStall (
EFI_STATUS
EFIAPI
UnitTestSetWatchdogTimer (
IN UINTN Timeout,
IN UINT64 WatchdogCode,
IN UINTN DataSize,
IN CHAR16 *WatchdogData OPTIONAL
IN UINTN Timeout,
IN UINT64 WatchdogCode,
IN UINTN DataSize,
IN CHAR16 *WatchdogData OPTIONAL
)
{
return EFI_NOT_AVAILABLE_YET;
@ -183,12 +183,12 @@ UnitTestDisconnectController (
EFI_STATUS
EFIAPI
UnitTestCalculateCrc32 (
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *Crc32
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *Crc32
)
{
if (Data == NULL || Crc32 == NULL || DataSize == 0) {
if ((Data == NULL) || (Crc32 == NULL) || (DataSize == 0)) {
return EFI_INVALID_PARAMETER;
}

View File

@ -14,25 +14,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include "UefiBootServicesTableLibUnitTest.h"
#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l')
#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l')
///
/// IHANDLE - contains a list of protocol handles
///
typedef struct {
UINTN Signature;
UINTN Signature;
/// All handles list of IHANDLE
LIST_ENTRY AllHandles;
LIST_ENTRY AllHandles;
/// List of PROTOCOL_INTERFACE's for this handle
LIST_ENTRY Protocols;
UINTN LocateRequest;
LIST_ENTRY Protocols;
UINTN LocateRequest;
/// The Handle Database Key value when this handle was last created or modified
UINT64 Key;
UINT64 Key;
} IHANDLE;
#define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE)
#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e')
#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e')
///
/// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol
@ -40,18 +40,17 @@ typedef struct {
/// with a list of registered notifies.
///
typedef struct {
UINTN Signature;
UINTN Signature;
/// Link Entry inserted to mProtocolDatabase
LIST_ENTRY AllEntries;
LIST_ENTRY AllEntries;
/// ID of the protocol
EFI_GUID ProtocolID;
EFI_GUID ProtocolID;
/// All protocol interfaces
LIST_ENTRY Protocols;
LIST_ENTRY Protocols;
/// Registered notification handlers
LIST_ENTRY Notify;
LIST_ENTRY Notify;
} PROTOCOL_ENTRY;
#define PROTOCOL_INTERFACE_SIGNATURE SIGNATURE_32('p','i','f','c')
///
@ -59,65 +58,63 @@ typedef struct {
/// with a protocol interface structure
///
typedef struct {
UINTN Signature;
UINTN Signature;
/// Link on IHANDLE.Protocols
LIST_ENTRY Link;
LIST_ENTRY Link;
/// Back pointer
IHANDLE *Handle;
IHANDLE *Handle;
/// Link on PROTOCOL_ENTRY.Protocols
LIST_ENTRY ByProtocol;
LIST_ENTRY ByProtocol;
/// The protocol ID
PROTOCOL_ENTRY *Protocol;
PROTOCOL_ENTRY *Protocol;
/// The interface value
VOID *Interface;
VOID *Interface;
/// OPEN_PROTOCOL_DATA list
LIST_ENTRY OpenList;
UINTN OpenListCount;
LIST_ENTRY OpenList;
UINTN OpenListCount;
} PROTOCOL_INTERFACE;
#define OPEN_PROTOCOL_DATA_SIGNATURE SIGNATURE_32('p','o','d','l')
typedef struct {
UINTN Signature;
///Link on PROTOCOL_INTERFACE.OpenList
LIST_ENTRY Link;
UINTN Signature;
/// Link on PROTOCOL_INTERFACE.OpenList
LIST_ENTRY Link;
EFI_HANDLE AgentHandle;
EFI_HANDLE ControllerHandle;
UINT32 Attributes;
UINT32 OpenCount;
EFI_HANDLE AgentHandle;
EFI_HANDLE ControllerHandle;
UINT32 Attributes;
UINT32 OpenCount;
} OPEN_PROTOCOL_DATA;
#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n')
#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n')
///
/// PROTOCOL_NOTIFY - used for each register notification for a protocol
///
typedef struct {
UINTN Signature;
PROTOCOL_ENTRY *Protocol;
UINTN Signature;
PROTOCOL_ENTRY *Protocol;
/// All notifications for this protocol
LIST_ENTRY Link;
LIST_ENTRY Link;
/// Event to notify
EFI_EVENT Event;
EFI_EVENT Event;
/// Last position notified
LIST_ENTRY *Position;
LIST_ENTRY *Position;
} PROTOCOL_NOTIFY;
typedef struct {
EFI_GUID *Protocol;
VOID *SearchKey;
LIST_ENTRY *Position;
PROTOCOL_ENTRY *ProtEntry;
EFI_GUID *Protocol;
VOID *SearchKey;
LIST_ENTRY *Position;
PROTOCOL_ENTRY *ProtEntry;
} LOCATE_POSITION;
typedef
IHANDLE *
(* UNIT_TEST_GET_NEXT) (
IN OUT LOCATE_POSITION *Position,
OUT VOID **Interface
(*UNIT_TEST_GET_NEXT) (
IN OUT LOCATE_POSITION *Position,
OUT VOID **Interface
);
#endif

View File

@ -20,7 +20,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
EFI_TPL
EFIAPI
UnitTestRaiseTpl (
IN EFI_TPL NewTpl
IN EFI_TPL NewTpl
)
{
return TPL_APPLICATION;
@ -36,7 +36,7 @@ UnitTestRaiseTpl (
VOID
EFIAPI
UnitTestRestoreTpl (
IN EFI_TPL NewTpl
IN EFI_TPL NewTpl
)
{
return;