From 8572fea91ce555d84e845c63c923e468ce12a1a4 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Wed, 29 Nov 2006 03:03:20 +0000 Subject: [PATCH] 1) Make a slightly better work around for the EdkDxeSalLib by removing constructor from MSA and calling constructor from library functions. 2) Fix pointer bug in the EdkUefiRuntimeLibrary in the event creation git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2034 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa | 3 --- .../Library/EdkDxeSalLib/Ipf/EsalServiceLib.c | 14 +++++++++++--- .../Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa index 42a846d7c2..a7a6214a30 100644 --- a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa +++ b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa @@ -54,9 +54,6 @@ EFI_SPECIFICATION_VERSION 0x00020000 EDK_RELEASE_VERSION 0x00020000 - - DxeSalLibConstruct - DxeSalVirtualNotifyEvent diff --git a/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c b/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c index 2e0daeb89e..706dda2873 100644 --- a/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c +++ b/EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c @@ -19,20 +19,26 @@ Abstract: #include - +BOOLEAN mLibraryInitialized = FALSE; STATIC EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *mEsalBootService; STATIC EFI_PLABEL mPlabel; EFI_STATUS EFIAPI DxeSalLibConstruct ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +// IN EFI_HANDLE ImageHandle, +// IN EFI_SYSTEM_TABLE *SystemTable + VOID ) { EFI_PLABEL *Plabel; EFI_STATUS Status; + if (mLibraryInitialized == TRUE) { + return EFI_SUCCESS; + } + mLibraryInitialized = TRUE; + // // The protocol contains a function pointer, which is an indirect procedure call. // An indirect procedure call goes through a plabel, and pointer to a function is @@ -109,6 +115,7 @@ Returns: --*/ { + DxeSalLibConstruct (); return mEsalBootService->AddExtendedSalProc ( mEsalBootService, ClassGuid, @@ -217,6 +224,7 @@ Returns: SAL_RETURN_REGS ReturnReg; SAL_EXTENDED_SAL_PROC EsalProc; + DxeSalLibConstruct (); ReturnReg = GetEsalEntryPoint (); if (ReturnReg.Status != EFI_SAL_SUCCESS) { return ReturnReg; diff --git a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c index 3e9554721a..00f557aa41 100644 --- a/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c +++ b/EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeLib.c @@ -159,7 +159,7 @@ Returns: EFI_TPL_NOTIFY, RuntimeLibVirtualNotifyEvent, NULL, - mEfiVirtualNotifyEvent + &mEfiVirtualNotifyEvent ); ASSERT_EFI_ERROR (Status); -- 2.39.2