]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c
1) Make a slightly better work around for the EdkDxeSalLib by removing constructor...
[mirror_edk2.git] / EdkModulePkg / Library / EdkDxeSalLib / Ipf / EsalServiceLib.c
index 2e0daeb89e1260c711bca6515f9f6e0bdebb60d5..706dda2873e92a278ce3f5bb668f927e7068c7f9 100644 (file)
@@ -19,20 +19,26 @@ Abstract:
 \r
 #include <Ipf/IpfDefines.h>\r
 \r
-\r
+BOOLEAN mLibraryInitialized = FALSE;\r
 STATIC EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *mEsalBootService;\r
 STATIC EFI_PLABEL                         mPlabel;\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 DxeSalLibConstruct (\r
-  IN EFI_HANDLE        ImageHandle,\r
-  IN EFI_SYSTEM_TABLE  *SystemTable\r
+//  IN EFI_HANDLE        ImageHandle,\r
+//  IN EFI_SYSTEM_TABLE  *SystemTable\r
+  VOID\r
   )\r
 {\r
   EFI_PLABEL  *Plabel;\r
   EFI_STATUS  Status;\r
 \r
+  if (mLibraryInitialized == TRUE) {\r
+    return EFI_SUCCESS;\r
+  }\r
+  mLibraryInitialized = TRUE;\r
+\r
   //\r
   // The protocol contains a function pointer, which is an indirect procedure call.\r
   // An indirect procedure call goes through a plabel, and pointer to a function is\r
@@ -109,6 +115,7 @@ Returns:
 \r
 --*/\r
 {\r
+  DxeSalLibConstruct ();\r
   return mEsalBootService->AddExtendedSalProc (\r
                             mEsalBootService,\r
                             ClassGuid,\r
@@ -217,6 +224,7 @@ Returns:
   SAL_RETURN_REGS       ReturnReg;\r
   SAL_EXTENDED_SAL_PROC EsalProc;\r
 \r
+  DxeSalLibConstruct ();\r
   ReturnReg = GetEsalEntryPoint ();\r
   if (ReturnReg.Status != EFI_SAL_SUCCESS) {\r
     return ReturnReg;\r