Add DxeDebugLibSerialPort that provides a debug library that layers directly on top of a serial port
Add an EdkDxeRuntimeSalLib that provide a SalLib that is safe for runtime use. The EdkDxeSalLib is now a boot service only lib. Move the registration and processing of ExitBootServicesEvents() from the RuntimeLib to the UEFI DriverEntryPointLib in the MdePkg. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2057 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -21,14 +21,11 @@ Module Name:
|
||||
// Driver Lib Module Globals
|
||||
//
|
||||
|
||||
STATIC EFI_EVENT mRuntimeNotifyEvent;
|
||||
STATIC EFI_EVENT mEfiVirtualNotifyEvent;
|
||||
STATIC BOOLEAN mEfiGoneVirtual = FALSE;
|
||||
STATIC BOOLEAN mEfiAtRuntime = FALSE;
|
||||
|
||||
EFI_RUNTIME_SERVICES *mRT;
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
EFIAPI
|
||||
RuntimeDriverExitBootServices (
|
||||
@@ -53,16 +50,6 @@ Returns:
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_EVENT_NOTIFY ChildNotifyEventHandler;
|
||||
UINTN Index;
|
||||
|
||||
for (Index = 0;
|
||||
_gDriverExitBootServicesEvent[Index] != NULL;
|
||||
Index++) {
|
||||
ChildNotifyEventHandler = _gDriverExitBootServicesEvent[Index];
|
||||
ChildNotifyEventHandler (Event, NULL);
|
||||
}
|
||||
|
||||
//
|
||||
// Clear out BootService globals
|
||||
//
|
||||
@@ -146,22 +133,10 @@ Returns:
|
||||
|
||||
mRT = SystemTable->RuntimeServices;
|
||||
|
||||
//
|
||||
// Register our ExitBootServices () notify function
|
||||
//
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
EFI_TPL_NOTIFY,
|
||||
RuntimeDriverExitBootServices,
|
||||
NULL,
|
||||
&mRuntimeNotifyEvent
|
||||
);
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Register SetVirtualAddressMap () notify function
|
||||
//
|
||||
if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
|
||||
EFI_TPL_NOTIFY,
|
||||
@@ -171,6 +146,7 @@ Returns:
|
||||
);
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -201,17 +177,13 @@ Returns:
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Close our ExitBootServices () notify function
|
||||
//
|
||||
Status = gBS->CloseEvent (mRuntimeNotifyEvent);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Close SetVirtualAddressMap () notify function
|
||||
//
|
||||
if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
|
||||
Status = gBS->CloseEvent (mEfiVirtualNotifyEvent);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
@@ -71,5 +71,8 @@
|
||||
<Constructor>RuntimeDriverLibConstruct</Constructor>
|
||||
<Destructor>RuntimeDriverLibDeconstruct</Destructor>
|
||||
</Extern>
|
||||
<Extern>
|
||||
<ExitBootServicesCallBack>RuntimeDriverExitBootServices</ExitBootServicesCallBack>
|
||||
</Extern>
|
||||
</Externs>
|
||||
</ModuleSurfaceArea>
|
@@ -21,13 +21,9 @@ Module Name:
|
||||
//
|
||||
// Driver Lib Module Globals
|
||||
//
|
||||
static EFI_EVENT mEfiVirtualNotifyEvent;
|
||||
EFI_RUNTIME_SERVICES *mRT;
|
||||
|
||||
STATIC EFI_EVENT mRuntimeNotifyEvent;
|
||||
STATIC EFI_EVENT mEfiVirtualNotifyEvent;
|
||||
|
||||
EFI_RUNTIME_SERVICES *mRT;
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
EFIAPI
|
||||
RuntimeDriverExitBootServices (
|
||||
@@ -52,21 +48,11 @@ Returns:
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_EVENT_NOTIFY ChildNotifyEventHandler;
|
||||
UINTN Index;
|
||||
|
||||
for (Index = 0; _gDriverExitBootServicesEvent[Index] != NULL; Index++) {
|
||||
ChildNotifyEventHandler = _gDriverExitBootServicesEvent[Index];
|
||||
ChildNotifyEventHandler (Event, NULL);
|
||||
if (EfiAtRuntime()) {
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Clear out BootService globals
|
||||
//
|
||||
gBS = NULL;
|
||||
}
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
EFIAPI
|
||||
RuntimeLibVirtualNotifyEvent (
|
||||
@@ -93,7 +79,7 @@ Returns:
|
||||
|
||||
--*/
|
||||
{
|
||||
UINTN Index;
|
||||
UINTN Index;
|
||||
EFI_EVENT_NOTIFY ChildNotifyEventHandler;
|
||||
|
||||
for (Index = 0; _gDriverSetVirtualAddressMapEvent[Index] != NULL; Index++) {
|
||||
@@ -137,31 +123,19 @@ Returns:
|
||||
|
||||
mRT = SystemTable->RuntimeServices;
|
||||
|
||||
//
|
||||
// Register our ExitBootServices () notify function
|
||||
//
|
||||
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_EXIT_BOOT_SERVICES,
|
||||
EFI_TPL_NOTIFY,
|
||||
RuntimeDriverExitBootServices,
|
||||
NULL,
|
||||
&mRuntimeNotifyEvent
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Register SetVirtualAddressMap () notify function
|
||||
//
|
||||
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
|
||||
EFI_TPL_NOTIFY,
|
||||
RuntimeLibVirtualNotifyEvent,
|
||||
NULL,
|
||||
&mEfiVirtualNotifyEvent
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
|
||||
Status = gBS->CreateEvent (
|
||||
EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
|
||||
EFI_TPL_NOTIFY,
|
||||
RuntimeLibVirtualNotifyEvent,
|
||||
NULL,
|
||||
&mEfiVirtualNotifyEvent
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -192,17 +166,13 @@ Returns:
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Close our ExitBootServices () notify function
|
||||
//
|
||||
Status = gBS->CloseEvent (mRuntimeNotifyEvent);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
//
|
||||
// Close SetVirtualAddressMap () notify function
|
||||
//
|
||||
Status = gBS->CloseEvent (mEfiVirtualNotifyEvent);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
|
||||
Status = gBS->CloseEvent (mEfiVirtualNotifyEvent);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user