]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Library/PeiReportStatusCodeLib/ReportStatusCodeLib.c
Update PeiReportStatusCodeLib instance, which will support report data prior to...
[mirror_edk2.git] / IntelFrameworkModulePkg / Library / PeiReportStatusCodeLib / ReportStatusCodeLib.c
index 2d08ccdeb4b50ef4ca33581792756ddb2713a24a..c79d93e643d4df996f24722b6b73b058f48b14d9 100644 (file)
@@ -22,6 +22,7 @@
 #include <Library/BaseLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/PeiServicesTablePointerLib.h>\r
+#include< Library/OemHookStatusCodeLib.h>\r
 #include <Library/PcdLib.h>\r
 \r
 #include <DebugInfo.h>\r
 //\r
 #define MAX_EXTENDED_DATA_SIZE  0x200\r
 \r
+\r
+/**\r
+  The constructor function initializes the OEM hooked status\r
+  code device.\r
+  \r
+  @param  FfsHeader   Pointer to FFS header the loaded driver.\r
+  @param  PeiServices Pointer to the PEI services.\r
+\r
+  @return  Status of initialization of OEM hook status code\r
+           device.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PeiReportStatusCodeLibConstructor (\r
+  IN EFI_PEI_FILE_HANDLE  FileHandle,\r
+  IN EFI_PEI_SERVICES     **PeiServices\r
+  )\r
+{\r
+  return OemHookStatusCodeInitialize ();\r
+}\r
+\r
+\r
 /**\r
   Internal worker function that reports a status code through the Status Code Protocol\r
 \r
@@ -65,16 +89,21 @@ InternalReportStatusCode (
   )\r
 {\r
   CONST EFI_PEI_SERVICES  **PeiServices;\r
+  EFI_STATUS              Status;\r
 \r
   PeiServices = (CONST EFI_PEI_SERVICES  **) GetPeiServicesTablePointer ();\r
-  return (*PeiServices)->ReportStatusCode (\r
-                           PeiServices,\r
-                           Type,\r
-                           Value,\r
-                           Instance,\r
-                           (EFI_GUID *)CallerId,\r
-                           Data\r
-                           );\r
+  Status =  (*PeiServices)->ReportStatusCode (\r
+                             PeiServices,\r
+                             Type,\r
+                             Value,\r
+                             Instance,\r
+                             (EFI_GUID *)CallerId,\r
+                             Data\r
+                             );\r
+  if (Status == EFI_NOT_AVAILABLE_YET) {\r
+    return OemHookStatusCodeReport (Type, Value, Instance, (EFI_GUID *) CallerId, Data);\r
+  }\r
+  return Status;\r
 }\r
 \r
 \r