}\r
\r
\r
-EFI_STATUS\r
-CoreShutdownEventServices (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Register all runtime events to make sure they are still available after ExitBootService.\r
-\r
-Arguments:\r
-\r
- None\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Always return success.\r
-\r
---*/\r
-{\r
- LIST_ENTRY *Link;\r
- IEVENT *Event;\r
-\r
- //\r
- // The Runtime AP is required for the core to function!\r
- //\r
- ASSERT (gRuntime != NULL);\r
-\r
- for (Link = mRuntimeEventList.ForwardLink; Link != &mRuntimeEventList; Link = Link->ForwardLink) {\r
- Event = CR (Link, IEVENT, RuntimeLink, EVENT_SIGNATURE);\r
- gRuntime->RegisterEvent (\r
- gRuntime, \r
- Event->Type, \r
- Event->NotifyTpl, \r
- Event->NotifyFunction, \r
- Event->NotifyContext, \r
- (VOID **)Event\r
- );\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-\r
VOID\r
CoreDispatchEventNotifies (\r
IN EFI_TPL Priority\r
//\r
// Keep a list of all RT events so we can tell the RT AP.\r
//\r
- InsertTailList (&mRuntimeEventList, &IEvent->RuntimeLink);\r
+ IEvent->RuntimeData.Type = Type;\r
+ IEvent->RuntimeData.NotifyTpl = NotifyTpl;\r
+ IEvent->RuntimeData.NotifyFunction = NotifyFunction;\r
+ IEvent->RuntimeData.NotifyContext = (VOID *) NotifyContext;\r
+ IEvent->RuntimeData.Event = (EFI_EVENT *) IEvent;\r
+ InsertTailList (&gRuntime->EventHead, &IEvent->RuntimeData.Link);\r
}\r
\r
CoreAcquireEventLock ();\r
//\r
// If the event is queued somewhere, remove it\r
//\r
-\r
- if (Event->RuntimeLink.ForwardLink != NULL) {\r
- RemoveEntryList (&Event->RuntimeLink);\r
+ \r
+ if (Event->RuntimeData.Link.ForwardLink != NULL) {\r
+ RemoveEntryList (&Event->RuntimeData.Link);\r
}\r
-\r
+ \r
if (Event->NotifyLink.ForwardLink != NULL) {\r
RemoveEntryList (&Event->NotifyLink);\r
}\r