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:
mdkinney
2006-12-06 05:17:50 +00:00
parent 756e4264d3
commit f1cd55fe24
11 changed files with 849 additions and 85 deletions

View File

@@ -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;
}

View File

@@ -71,5 +71,8 @@
<Constructor>RuntimeDriverLibConstruct</Constructor>
<Destructor>RuntimeDriverLibDeconstruct</Destructor>
</Extern>
<Extern>
<ExitBootServicesCallBack>RuntimeDriverExitBootServices</ExitBootServicesCallBack>
</Extern>
</Externs>
</ModuleSurfaceArea>

View File

@@ -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;
}