18UINT32 mStatusCodeNestStatus = 0;
48 IN EFI_MM_RSC_HANDLER_CALLBACK Callback
54 if (Callback ==
NULL) {
55 return EFI_INVALID_PARAMETER;
60 if (CallbackEntry->RscHandlerCallback == Callback) {
64 return EFI_ALREADY_STARTED;
69 ASSERT (CallbackEntry !=
NULL);
71 CallbackEntry->Signature = MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE;
72 CallbackEntry->RscHandlerCallback = Callback;
95 IN EFI_MM_RSC_HANDLER_CALLBACK Callback
101 if (Callback ==
NULL) {
102 return EFI_INVALID_PARAMETER;
107 if (CallbackEntry->RscHandlerCallback == Callback) {
117 return EFI_NOT_FOUND;
158 return EFI_DEVICE_ERROR;
167 CallbackEntry->RscHandlerCallback (
208 &gEfiMmRscHandlerProtocolGuid,
210 &mSmmRscHandlerProtocol
219 &gEfiMmStatusCodeProtocolGuid,
221 &mSmmStatusCodeProtocol
BOOLEAN EFIAPI IsNull(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetNextNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetFirstNode(IN CONST LIST_ENTRY *List)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
#define INITIALIZE_LIST_HEAD_VARIABLE(ListHead)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define ASSERT_EFI_ERROR(StatusParameter)
#define CR(Record, TYPE, Field, TestSignature)
UINT32 EFI_STATUS_CODE_VALUE
UINT32 EFI_STATUS_CODE_TYPE
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
EFI_STATUS EFIAPI Unregister(IN EFI_MM_RSC_HANDLER_CALLBACK Callback)
EFI_STATUS EFIAPI ReportDispatcher(IN CONST EFI_MM_STATUS_CODE_PROTOCOL *This, IN EFI_STATUS_CODE_TYPE CodeType, IN EFI_STATUS_CODE_VALUE Value, IN UINT32 Instance, IN CONST EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL)
EFI_STATUS GenericStatusCodeCommonEntry(VOID)
EFI_STATUS EFIAPI Register(IN EFI_MM_RSC_HANDLER_CALLBACK Callback)
UINT32 EFIAPI InterlockedCompareExchange32(IN OUT volatile UINT32 *Value, IN UINT32 CompareValue, IN UINT32 ExchangeValue)
EFI_INSTALL_PROTOCOL_INTERFACE MmInstallProtocolInterface