]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c
1) Initialize gBS, gST, gImageHandle in UefiBootServicesTableLib.c to NULL
[mirror_edk2.git] / MdePkg / Library / DxeReportStatusCodeLib / ReportStatusCodeLib.c
index 9edb75313765e36d1aca05ba8c650817efaecd4d..28649f72cc3b126f8d433edea2c07414cdbedc6b 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Report Status Code Library for DXE Phase.\r
 \r
-  Copyright (c) 2006, Intel Corporation<BR>\r
+  Copyright (c) 2006 - 2007, Intel Corporation<BR>\r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
@@ -40,12 +40,13 @@ static EFI_STATUS_CODE_PROTOCOL  *gStatusCode = NULL;
   @retval  EFI_UNSUPPORTED       Status Code Protocol is not available.\r
 \r
 **/\r
+STATIC\r
 EFI_STATUS\r
 InternalReportStatusCode (\r
   IN EFI_STATUS_CODE_TYPE     Type,\r
   IN EFI_STATUS_CODE_VALUE    Value,\r
   IN UINT32                   Instance,\r
-  IN EFI_GUID                 *CallerId OPTIONAL,\r
+  IN CONST EFI_GUID           *CallerId OPTIONAL,\r
   IN EFI_STATUS_CODE_DATA     *Data     OPTIONAL  \r
   )\r
 {\r
@@ -56,6 +57,9 @@ InternalReportStatusCode (
   // in the handle database.\r
   //\r
   if (gStatusCode == NULL) {\r
+    if (gBS == NULL) {\r
+      return EFI_UNSUPPORTED;\r
+    }\r
     Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);\r
     if (EFI_ERROR (Status) || gStatusCode == NULL) {\r
       return EFI_UNSUPPORTED;\r
@@ -66,7 +70,7 @@ InternalReportStatusCode (
   // A Status Code Protocol is present in the handle database, so pass in all the  \r
   // parameters to the ReportStatusCode() service of the Status Code Protocol\r
   //\r
-  return gStatusCode->ReportStatusCode (Type, Value, Instance, CallerId, Data);\r
+  return gStatusCode->ReportStatusCode (Type, Value, Instance, (EFI_GUID *)CallerId, Data);\r
 }\r
 \r
 \r
@@ -78,16 +82,13 @@ InternalReportStatusCode (
   @return  The size, in bytes, of DevicePath.\r
 \r
 **/\r
+STATIC\r
 UINTN\r
 InternalReportStatusCodeDevicePathSize (\r
-  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
   )\r
 {\r
-  EFI_DEVICE_PATH_PROTOCOL  *Start;\r
-\r
-  if (DevicePath == NULL) {\r
-    return 0;\r
-  }\r
+  CONST EFI_DEVICE_PATH_PROTOCOL  *Start;\r
 \r
   //\r
   // Search for the end of the device path structure\r
@@ -143,8 +144,8 @@ CodeTypeToPostCode (
   //\r
   if (((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) ||\r
       ((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE)       ) {\r
-    *PostCode  = (UINT8) (((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5);\r
-    *PostCode |= (UINT8) (((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f);\r
+    *PostCode  = (UINT8) ((((Value & EFI_STATUS_CODE_CLASS_MASK) >> 24) << 5) |\r
+                          (((Value & EFI_STATUS_CODE_SUBCLASS_MASK) >> 16) & 0x1f));\r
     return TRUE;\r
   }\r
   return FALSE;\r
@@ -187,12 +188,12 @@ CodeTypeToPostCode (
 BOOLEAN\r
 EFIAPI\r
 ReportStatusCodeExtractAssertInfo (\r
-  IN  EFI_STATUS_CODE_TYPE   CodeType,\r
-  IN  EFI_STATUS_CODE_VALUE  Value,  \r
-  IN  EFI_STATUS_CODE_DATA   *Data, \r
-  OUT CHAR8                  **Filename,\r
-  OUT CHAR8                  **Description,\r
-  OUT UINT32                 *LineNumber\r
+  IN EFI_STATUS_CODE_TYPE        CodeType,\r
+  IN EFI_STATUS_CODE_VALUE       Value,  \r
+  IN CONST EFI_STATUS_CODE_DATA  *Data, \r
+  OUT CHAR8                      **Filename,\r
+  OUT CHAR8                      **Description,\r
+  OUT UINT32                     *LineNumber\r
   )\r
 {\r
   EFI_DEBUG_ASSERT_DATA  *AssertData;\r
@@ -247,10 +248,10 @@ ReportStatusCodeExtractAssertInfo (
 BOOLEAN\r
 EFIAPI\r
 ReportStatusCodeExtractDebugInfo (\r
-  IN  EFI_STATUS_CODE_DATA  *Data,\r
-  OUT UINT32                *ErrorLevel,\r
-  OUT VA_LIST               *Marker,\r
-  OUT CHAR8                 **Format\r
+  IN CONST EFI_STATUS_CODE_DATA  *Data, \r
+  OUT UINT32                     *ErrorLevel,\r
+  OUT VA_LIST                    *Marker,\r
+  OUT CHAR8                      **Format\r
   )\r
 {\r
   EFI_DEBUG_INFO  *DebugInfo;\r
@@ -348,9 +349,9 @@ ReportStatusCode (
 EFI_STATUS\r
 EFIAPI\r
 ReportStatusCodeWithDevicePath (\r
-  IN EFI_STATUS_CODE_TYPE      Type,\r
-  IN EFI_STATUS_CODE_VALUE     Value,\r
-  IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
+  IN EFI_STATUS_CODE_TYPE            Type,\r
+  IN EFI_STATUS_CODE_VALUE           Value,\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
   )\r
 {\r
   ASSERT (DevicePath != NULL);\r
@@ -401,7 +402,7 @@ EFIAPI
 ReportStatusCodeWithExtendedData (\r
   IN EFI_STATUS_CODE_TYPE   Type,\r
   IN EFI_STATUS_CODE_VALUE  Value,\r
-  IN VOID                   *ExtendedData,\r
+  IN CONST VOID             *ExtendedData,\r
   IN UINTN                  ExtendedDataSize\r
   )\r
 {\r
@@ -466,9 +467,9 @@ ReportStatusCodeEx (
   IN EFI_STATUS_CODE_TYPE   Type,\r
   IN EFI_STATUS_CODE_VALUE  Value,\r
   IN UINT32                 Instance,\r
-  IN EFI_GUID               *CallerId           OPTIONAL,\r
-  IN EFI_GUID               *ExtendedDataGuid   OPTIONAL,\r
-  IN VOID                   *ExtendedData       OPTIONAL,\r
+  IN CONST EFI_GUID         *CallerId          OPTIONAL,\r
+  IN CONST EFI_GUID         *ExtendedDataGuid  OPTIONAL,\r
+  IN CONST VOID             *ExtendedData      OPTIONAL,\r
   IN UINTN                  ExtendedDataSize\r
   )\r
 {\r
@@ -478,6 +479,10 @@ ReportStatusCodeEx (
   ASSERT (!((ExtendedData == NULL) && (ExtendedDataSize != 0)));\r
   ASSERT (!((ExtendedData != NULL) && (ExtendedDataSize == 0)));\r
 \r
+  if (gBS == NULL) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
   //\r
   // Allocate space for the Status Code Header and its buffer\r
   //\r
@@ -537,7 +542,7 @@ ReportProgressCodeEnabled (
   VOID\r
   )\r
 {\r
-  return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);\r
+  return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED) != 0);\r
 }\r
 \r
 \r
@@ -559,7 +564,7 @@ ReportErrorCodeEnabled (
   VOID\r
   )\r
 {\r
-  return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);\r
+  return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED) != 0);\r
 }\r
 \r
 \r
@@ -581,5 +586,5 @@ ReportDebugCodeEnabled (
   VOID\r
   )\r
 {\r
-  return ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);\r
+  return (BOOLEAN) ((PcdGet8(PcdReportStatusCodePropertyMask) & REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED) != 0);\r
 }\r