]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/ReportStatusCodeLib.h
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Include / Library / ReportStatusCodeLib.h
index b05bcc659371c62e26e4e939409550aad15584c8..3924fa20e8dcaf5076c407a117c4dc149fa59701 100644 (file)
 /** @file\r
 /** @file\r
-  Report Status Code Library public .h file\r
+  Provides services to log status code records.\r
 \r
 \r
-  Copyright (c) 2006, Intel Corporation                                                         \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
-  http://opensource.org/licenses/bsd-license.php                                            \r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php.\r
 \r
 \r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
 \r
 #ifndef __REPORT_STATUS_CODE_LIB_H__\r
 #define __REPORT_STATUS_CODE_LIB_H__\r
 \r
 \r
 **/\r
 \r
 #ifndef __REPORT_STATUS_CODE_LIB_H__\r
 #define __REPORT_STATUS_CODE_LIB_H__\r
 \r
+#include <Uefi/UefiBaseType.h>\r
+#include <Pi/PiStatusCode.h>\r
+#include <Protocol/DevicePath.h>\r
+\r
 //\r
 // Declare bits for PcdReportStatusCodePropertyMask\r
 //\r
 #define REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED          0x00000001\r
 #define REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED             0x00000002\r
 #define REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED             0x00000004\r
 //\r
 // Declare bits for PcdReportStatusCodePropertyMask\r
 //\r
 #define REPORT_STATUS_CODE_PROPERTY_PROGRESS_CODE_ENABLED          0x00000001\r
 #define REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED             0x00000002\r
 #define REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED             0x00000004\r
-#define REPORT_STATUS_CODE_PROPERTY_POST_CODE_ENABLED              0x00000008\r
-#define REPORT_STATUS_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED  0x00000010\r
-\r
-//\r
-// Extended Data structure definitions with EFI_STATUS_CODE_DATA headers removed\r
-//\r
-\r
-///\r
-/// Voltage Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   Voltage;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} REPORT_STATUS_CODE_LIBRARY_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;\r
-\r
-///\r
-/// Microcode Update Extended Error Data\r
-///\r
-typedef struct {\r
-  UINT32                Version;\r
-} REPORT_STATUS_CODE_LIBRARY_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;\r
-\r
-///\r
-/// Asynchronous Timer Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   TimerLimit;\r
-} REPORT_STATUS_CODE_LIBRARY_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;\r
-\r
-///\r
-/// Host Processor Mismatch Extended Error Data\r
-///\r
-typedef struct {\r
-  UINT32                Instance;\r
-  UINT16                Attributes;\r
-} REPORT_STATUS_CODE_LIBRARY_HOST_PROCESSOR_MISMATCH_ERROR_DATA;\r
-\r
-///\r
-/// Thermal Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_EXP_BASE10_DATA   Temperature;\r
-  EFI_EXP_BASE10_DATA   Threshold;\r
-} REPORT_STATUS_CODE_LIBRARY_COMPUTING_UNIT_THERMAL_ERROR_DATA;\r
-\r
-///\r
-/// Processor Disabled Extended Error Data\r
-///\r
-typedef struct {\r
-  UINT32                Cause;\r
-  BOOLEAN               SoftwareDisabled;\r
-} REPORT_STATUS_CODE_LIBRARY_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;\r
-\r
-///\r
-/// Embedded cache init extended data\r
-///\r
-typedef struct {\r
-  UINT32                Level;\r
-  EFI_INIT_CACHE_TYPE   Type;\r
-} REPORT_STATUS_CODE_LIBRARY_CACHE_INIT_DATA;\r
-\r
-///\r
-/// Memory Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_MEMORY_ERROR_GRANULARITY  Granularity;\r
-  EFI_MEMORY_ERROR_OPERATION    Operation;\r
-  UINTN                         Syndrome;\r
-  EFI_PHYSICAL_ADDRESS          Address;\r
-  UINTN                         Resolution;\r
-} REPORT_STATUS_CODE_LIBRARY_MEMORY_EXTENDED_ERROR_DATA;\r
-\r
-///\r
-/// DIMM number\r
-///\r
-typedef struct {\r
-  UINT16                Array;\r
-  UINT16                Device;\r
-} REPORT_STATUS_CODE_LIBRARY_STATUS_CODE_DIMM_NUMBER;\r
-\r
-///\r
-/// Memory Module Mismatch Extended Error Data\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
-} REPORT_STATUS_CODE_LIBRARY_MEMORY_MODULE_MISMATCH_ERROR_DATA;\r
-\r
-///\r
-/// Memory Range Extended Data\r
-///\r
-typedef struct {\r
-  EFI_PHYSICAL_ADDRESS  Start;\r
-  EFI_PHYSICAL_ADDRESS  Length;\r
-} REPORT_STATUS_CODE_LIBRARY_MEMORY_RANGE_EXTENDED_DATA;\r
-\r
-///\r
-/// Device handle Extended Data. Used for many\r
-/// errors and progress codes to point to the device.\r
-///\r
-typedef struct {\r
-  EFI_HANDLE            Handle;\r
-} REPORT_STATUS_CODE_LIBRARY_DEVICE_HANDLE_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  UINT8                                *DevicePath;\r
-} REPORT_STATUS_CODE_LIBRARY_DEVICE_PATH_EXTENDED_DATA;\r
-\r
-typedef struct {\r
-  EFI_HANDLE                     ControllerHandle;\r
-  EFI_HANDLE                     DriverBindingHandle;\r
-  UINT16                         DevicePathSize;\r
-  UINT8                          *RemainingDevicePath;\r
-} REPORT_STATUS_CODE_LIBRARY_STATUS_CODE_START_EXTENDED_DATA;\r
-\r
-///\r
-/// Resource Allocation Failure Extended Error Data\r
-///\r
-typedef struct {\r
-  UINT32                             Bar;\r
-  UINT16                             DevicePathSize;\r
-  UINT16                             ReqResSize;\r
-  UINT16                             AllocResSize;\r
-  UINT8                              *DevicePath;\r
-  UINT8                              *ReqRes;\r
-  UINT8                              *AllocRes;\r
-} REPORT_STATUS_CODE_LIBRARY_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
-\r
-///\r
-/// Extended Error Data for Assert\r
-///\r
-typedef struct {\r
-  UINT32                      LineNumber;\r
-  UINT32                      FileNameSize;\r
-  EFI_STATUS_CODE_STRING_DATA *FileName;\r
-} REPORT_STATUS_CODE_LIBRARY_DEBUG_ASSERT_DATA;\r
-\r
-///\r
-/// System Context Data EBC/IA32/IPF\r
-///\r
-typedef struct {\r
-  EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT  Context;\r
-} REPORT_STATUS_CODE_LIBRARY_STATUS_CODE_EXCEP_EXTENDED_DATA;\r
-\r
-///\r
-/// Legacy Oprom extended data\r
-///\r
-typedef struct {\r
-  EFI_HANDLE            DeviceHandle;\r
-  EFI_PHYSICAL_ADDRESS  RomImageBase;\r
-} REPORT_STATUS_CODE_LIBRARY_LEGACY_OPROM_EXTENDED_DATA;\r
-\r
-//\r
-// Extern for the modules Caller ID GUID\r
-//\r
-extern EFI_GUID gEfiCallerIdGuid;\r
 \r
 /**\r
   Converts a status code to an 8-bit POST code value.\r
 \r
 /**\r
   Converts a status code to an 8-bit POST code value.\r
@@ -193,7 +42,7 @@ extern EFI_GUID gEfiCallerIdGuid;
   @param  PostCode  A pointer to the 8-bit POST code value to return. \r
 \r
   @retval  TRUE   The status code specified by CodeType and Value was converted \r
   @param  PostCode  A pointer to the 8-bit POST code value to return. \r
 \r
   @retval  TRUE   The status code specified by CodeType and Value was converted \r
-                  to an 8-bit POST code and returned in  PostCode.\r
+                  to an 8-bit POST code and returned in PostCode.\r
   @retval  FALSE  The status code specified by CodeType and Value could not be \r
                   converted to an 8-bit POST code value.\r
 \r
   @retval  FALSE  The status code specified by CodeType and Value could not be \r
                   converted to an 8-bit POST code value.\r
 \r
@@ -228,10 +77,10 @@ CodeTypeToPostCode (
 \r
   @param  CodeType     The type of status code being converted.\r
   @param  Value        The status code value being converted.\r
 \r
   @param  CodeType     The type of status code being converted.\r
   @param  Value        The status code value being converted.\r
-  @param  Data         Pointer to status code data buffer. \r
-  @param  Filename     Pointer to the source file name that generated the ASSERT().\r
-  @param  Description  Pointer to the description of the ASSERT().\r
-  @param  LineNumber   Pointer to source line number that generated the ASSERT().\r
+  @param  Data         The pointer to status code data buffer. \r
+  @param  Filename     The pointer to the source file name that generated the ASSERT().\r
+  @param  Description  The pointer to the description of the ASSERT().\r
+  @param  LineNumber   The pointer to source line number that generated the ASSERT().\r
 \r
   @retval  TRUE   The status code specified by CodeType, Value, and Data was \r
                   converted ASSERT() arguments specified by Filename, Description, \r
 \r
   @retval  TRUE   The status code specified by CodeType, Value, and Data was \r
                   converted ASSERT() arguments specified by Filename, Description, \r
@@ -243,12 +92,12 @@ CodeTypeToPostCode (
 BOOLEAN\r
 EFIAPI\r
 ReportStatusCodeExtractAssertInfo (\r
 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
 \r
   );\r
 \r
 \r
@@ -269,10 +118,10 @@ ReportStatusCodeExtractAssertInfo (
   If Marker is NULL, then ASSERT().\r
   If Format is NULL, then ASSERT().\r
 \r
   If Marker is NULL, then ASSERT().\r
   If Format is NULL, then ASSERT().\r
 \r
-  @param  Data        Pointer to status code data buffer. \r
-  @param  ErrorLevel  Pointer to error level mask for a debug message.\r
-  @param  Marker      Pointer to the variable argument list associated with Format.\r
-  @param  Format      Pointer to a Null-terminated ASCII format string of a \r
+  @param  Data        The pointer to status code data buffer. \r
+  @param  ErrorLevel  The pointer to error level mask for a debug message.\r
+  @param  Marker      The pointer to the variable argument list associated with Format.\r
+  @param  Format      The pointer to a Null-terminated ASCII format string of a \r
                       debug message.\r
 \r
   @retval  TRUE   The status code specified by Data was converted DEBUG() arguments \r
                       debug message.\r
 \r
   @retval  TRUE   The status code specified by Data was converted DEBUG() arguments \r
@@ -284,10 +133,10 @@ ReportStatusCodeExtractAssertInfo (
 BOOLEAN\r
 EFIAPI\r
 ReportStatusCodeExtractDebugInfo (\r
 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 BASE_LIST                  *Marker,\r
+  OUT CHAR8                      **Format\r
   );\r
 \r
 \r
   );\r
 \r
 \r
@@ -299,7 +148,7 @@ ReportStatusCodeExtractDebugInfo (
   passed in a zero instance, NULL extended data, and a caller ID of \r
   gEfiCallerIdGuid, which is the GUID for the module.  \r
   \r
   passed in a zero instance, NULL extended data, and a caller ID of \r
   gEfiCallerIdGuid, which is the GUID for the module.  \r
   \r
-  ReportStatusCode()must actively prevent recusrsion.  If ReportStatusCode() \r
+  ReportStatusCode()must actively prevent recursion.  If ReportStatusCode() \r
   is called while processing another any other Report Status Code Library function,\r
   then ReportStatusCode() must return immediately.\r
 \r
   is called while processing another any other Report Status Code Library function,\r
   then ReportStatusCode() must return immediately.\r
 \r
@@ -309,7 +158,7 @@ ReportStatusCodeExtractDebugInfo (
   @retval  EFI_SUCCESS       The status code was reported.\r
   @retval  EFI_DEVICE_ERROR  There status code could not be reported due to a \r
                              device error.\r
   @retval  EFI_SUCCESS       The status code was reported.\r
   @retval  EFI_DEVICE_ERROR  There status code could not be reported due to a \r
                              device error.\r
-  @retval  EFI_UNSUPPORTED   Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED   The report status code is not supported.\r
 \r
 **/\r
 EFI_STATUS\r
 \r
 **/\r
 EFI_STATUS\r
@@ -326,9 +175,8 @@ ReportStatusCode (
   Allocates and fills in the extended data section of a status code with the \r
   Device Path Protocol specified by DevicePath.  This function is responsible \r
   for allocating a buffer large enough for the standard header and the device \r
   Allocates and fills in the extended data section of a status code with the \r
   Device Path Protocol specified by DevicePath.  This function is responsible \r
   for allocating a buffer large enough for the standard header and the device \r
-  path.  The standard header is filled in with a GUID of \r
-  gEfiStatusCodeSpecificDataGuid.  The status code is reported with a zero \r
-  instance and a caller ID of gEfiCallerIdGuid.\r
+  path.  The standard header is filled in with an implementation dependent GUID.\r
+  The status code is reported with a zero instance and a caller ID of gEfiCallerIdGuid.\r
 \r
   ReportStatusCodeWithDevicePath()must actively prevent recursion.  If \r
   ReportStatusCodeWithDevicePath() is called while processing another any other \r
 \r
   ReportStatusCodeWithDevicePath()must actively prevent recursion.  If \r
   ReportStatusCodeWithDevicePath() is called while processing another any other \r
@@ -337,23 +185,25 @@ ReportStatusCode (
 \r
   If DevicePath is NULL, then ASSERT().\r
 \r
 \r
   If DevicePath is NULL, then ASSERT().\r
 \r
-  @param  Type        Status code type. \r
-  @param  Value       Status code value.\r
-  @param  DevicePath  Pointer to the Device Path Protocol to be reported.\r
+  @param  Type        The status code type. \r
+  @param  Value       The status code value.\r
+  @param  DevicePath  The pointer to the Device Path Protocol to be reported.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported with the extended \r
                                  data specified by DevicePath.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported with the extended \r
                                  data specified by DevicePath.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 ReportStatusCodeWithDevicePath (\r
 \r
 **/\r
 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
 \r
   );\r
 \r
 \r
@@ -366,7 +216,7 @@ ReportStatusCodeWithDevicePath (
   These data structure do not have the standard header, so this function is \r
   responsible for allocating a buffer large enough for the standard header and \r
   the extended data passed into this function.  The standard header is filled \r
   These data structure do not have the standard header, so this function is \r
   responsible for allocating a buffer large enough for the standard header and \r
   the extended data passed into this function.  The standard header is filled \r
-  in with a GUID of  gEfiStatusCodeSpecificDataGuid.  The status code is reported \r
+  in with an implementation dependent GUID.  The status code is reported \r
   with a zero instance and a caller ID of gEfiCallerIdGuid.\r
 \r
   ReportStatusCodeWithExtendedData()must actively prevent recursion.  If \r
   with a zero instance and a caller ID of gEfiCallerIdGuid.\r
 \r
   ReportStatusCodeWithExtendedData()must actively prevent recursion.  If \r
@@ -377,9 +227,9 @@ ReportStatusCodeWithDevicePath (
   If ExtendedData is NULL, then ASSERT().\r
   If ExtendedDataSize is 0, then ASSERT().\r
 \r
   If ExtendedData is NULL, then ASSERT().\r
   If ExtendedDataSize is 0, then ASSERT().\r
 \r
-  @param  Type              Status code type. \r
-  @param  Value             Status code value.\r
-  @param  ExtendedData      Pointer to the extended data buffer to be reported.\r
+  @param  Type              The status code type. \r
+  @param  Value             The status code value.\r
+  @param  ExtendedData      The pointer to the extended data buffer to be reported.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer to \r
                             be reported.\r
 \r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer to \r
                             be reported.\r
 \r
@@ -387,7 +237,9 @@ ReportStatusCodeWithDevicePath (
                                  data specified by ExtendedData and ExtendedDataSize.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
                                  data specified by ExtendedData and ExtendedDataSize.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 EFI_STATUS\r
 \r
 **/\r
 EFI_STATUS\r
@@ -395,7 +247,7 @@ EFIAPI
 ReportStatusCodeWithExtendedData (\r
   IN EFI_STATUS_CODE_TYPE   Type,\r
   IN EFI_STATUS_CODE_VALUE  Value,\r
 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
   IN UINTN                  ExtendedDataSize\r
   );\r
 \r
@@ -410,7 +262,7 @@ ReportStatusCodeWithExtendedData (
   is responsible for allocating a buffer large enough for the standard header and \r
   the extended data passed into this function.  The standard header is filled in \r
   with a GUID specified by ExtendedDataGuid.  If ExtendedDataGuid is NULL, then a \r
   is responsible for allocating a buffer large enough for the standard header and \r
   the extended data passed into this function.  The standard header is filled in \r
   with a GUID specified by ExtendedDataGuid.  If ExtendedDataGuid is NULL, then a \r
-  GUID of gEfiStatusCodeSpecificDatauid is used.  The status code is reported with \r
+  GUID of gEfiStatusCodeSpecificDataGuid is used.  The status code is reported with \r
   an instance specified by Instance and a caller ID specified by CallerId.  If \r
   CallerId is NULL, then a caller ID of gEfiCallerIdGuid is used.\r
 \r
   an instance specified by Instance and a caller ID specified by CallerId.  If \r
   CallerId is NULL, then a caller ID of gEfiCallerIdGuid is used.\r
 \r
@@ -421,24 +273,25 @@ ReportStatusCodeWithExtendedData (
   If ExtendedData is NULL and ExtendedDataSize is not zero, then ASSERT().\r
   If ExtendedData is not NULL and ExtendedDataSize is zero, then ASSERT().\r
 \r
   If ExtendedData is NULL and ExtendedDataSize is not zero, then ASSERT().\r
   If ExtendedData is not NULL and ExtendedDataSize is zero, then ASSERT().\r
 \r
-  @param  Type              Status code type. \r
-  @param  Value             Status code value.\r
-  @param  Instance          Status code instance number.\r
-  @param  CallerId          Pointer to a GUID that identifies the caller of this \r
+  @param  Type              The status code type. \r
+  @param  Value             The status code value.\r
+  @param  Instance          The status code instance number.\r
+  @param  CallerId          The pointer to a GUID that identifies the caller of this \r
                             function.  If this parameter is NULL, then a caller \r
                             ID of gEfiCallerIdGuid is used.\r
                             function.  If this parameter is NULL, then a caller \r
                             ID of gEfiCallerIdGuid is used.\r
-  @param  ExtendedDataGuid  Pointer to the GUID for the extended data buffer.  \r
+  @param  ExtendedDataGuid  The pointer to the GUID for the extended data buffer.  \r
                             If this parameter is NULL, then a the status code \r
                             If this parameter is NULL, then a the status code \r
-                            standard header is filled in with \r
-                            gEfiStatusCodeSpecificDataGuid.\r
-  @param  ExtendedData      Pointer to the extended data buffer.  This is an \r
+                            standard header is filled in with an implementation dependent GUID.\r
+  @param  ExtendedData      The pointer to the extended data buffer.  This is an \r
                             optional parameter that may be NULL.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate \r
                                  the extended data section if it was specified.\r
                             optional parameter that may be NULL.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate \r
                                  the extended data section if it was specified.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 EFI_STATUS\r
 \r
 **/\r
 EFI_STATUS\r
@@ -447,70 +300,13 @@ ReportStatusCodeEx (
   IN EFI_STATUS_CODE_TYPE   Type,\r
   IN EFI_STATUS_CODE_VALUE  Value,\r
   IN UINT32                 Instance,\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 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
 \r
   IN UINTN                  ExtendedDataSize\r
   );\r
 \r
 \r
-/**\r
-  Sends an 32-bit value to a POST card.\r
-\r
-  Sends the 32-bit value specified by Value to a POST card, and returns Value.  \r
-  Some implementations of this library function may perform I/O operations \r
-  directly to a POST card device.  Other implementations may send Value to \r
-  ReportStatusCode(), and the status code reporting mechanism will eventually \r
-  display the 32-bit value on the status reporting device.\r
-  \r
-  PostCode() must actively prevent recursion.  If PostCode() is called while \r
-  processing another any other Report Status Code Library function, then \r
-  PostCode() must return Value immediately.\r
-\r
-  @param  Value  The 32-bit value to write to the POST card.\r
-\r
-  @return  Value\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-PostCode (\r
-  IN UINT32  Value\r
-  );\r
-\r
-\r
-/**\r
-  Sends an 32-bit value to a POST and associated ASCII string.\r
-\r
-  Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
-  If Description is not NULL, then the ASCII string specified by Description is \r
-  also passed to the handler that displays the POST card value.  Some \r
-  implementations of this library function may perform I/O operations directly \r
-  to a POST card device.  Other implementations may send Value to ReportStatusCode(), \r
-  and the status code reporting mechanism will eventually display the 32-bit \r
-  value on the status reporting device.  \r
-\r
-  PostCodeWithDescription()must actively prevent recursion.  If \r
-  PostCodeWithDescription() is called while processing another any other Report \r
-  Status Code Library function, then PostCodeWithDescription() must return Value \r
-  immediately.\r
-\r
-  @param  Value        The 32-bit value to write to the POST card.\r
-  @param  Description  Pointer to an ASCII string that is a description of the \r
-                       POST code value.  This is an optional parameter that may \r
-                       be NULL.\r
-\r
-  @return  Value\r
-\r
-**/\r
-UINT32\r
-EFIAPI\r
-PostCodeWithDescription (\r
-  IN UINT32       Value,\r
-  IN CONST CHAR8  *Description  OPTIONAL\r
-  );\r
-\r
-\r
 /**\r
   Returns TRUE if status codes of type EFI_PROGRESS_CODE are enabled\r
 \r
 /**\r
   Returns TRUE if status codes of type EFI_PROGRESS_CODE are enabled\r
 \r
@@ -534,7 +330,7 @@ ReportProgressCodeEnabled (
   Returns TRUE if status codes of type EFI_ERROR_CODE are enabled\r
 \r
   This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED \r
   Returns TRUE if status codes of type EFI_ERROR_CODE are enabled\r
 \r
   This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED \r
-  bit of PcdReportStatusCodeProperyMask is set.  Otherwise FALSE is returned.\r
+  bit of PcdReportStatusCodeProperyMask is set.  Otherwise, FALSE is returned.\r
 \r
   @retval  TRUE   The REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED bit of \r
                   PcdReportStatusCodeProperyMask is set.\r
 \r
   @retval  TRUE   The REPORT_STATUS_CODE_PROPERTY_ERROR_CODE_ENABLED bit of \r
                   PcdReportStatusCodeProperyMask is set.\r
@@ -568,45 +364,6 @@ ReportDebugCodeEnabled (
   );\r
 \r
 \r
   );\r
 \r
 \r
-/**\r
-  Returns TRUE if POST Codes are enabled.\r
-\r
-  This function returns TRUE if the REPORT_STATUS_CODE_PROPERTY_POST_CODE_ENABLED \r
-  bit of PcdReportStatusCodeProperyMask is set.  Otherwise FALSE is returned.\r
-\r
-  @retval  TRUE   The REPORT_STATUS_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
-                  PcdReportStatusCodeProperyMask is set.\r
-  @retval  FALSE  The REPORT_STATUS_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
-                  PcdReportStatusCodeProperyMask is clear.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-ReportPostCodeEnabled (\r
-  VOID\r
-  );\r
-\r
-\r
-/**\r
-  Returns TRUE if POST code descriptions are enabled.\r
-\r
-  This function returns TRUE if the \r
-  REPORT_STATUS_CODE_PROPERTY_POST_CODE_DESCRIPTIONS_ENABLED bit of \r
-  PcdReportStatusCodeProperyMask is set.  Otherwise FALSE is returned.\r
-\r
-  @retval  TRUE   The REPORT_STATUS_CODE_PROPERTY_POST_CODE_DESCRIPTIONS_ENABLED \r
-                  bit of PcdReportStatusCodeProperyMask is set.\r
-  @retval  FALSE  The REPORT_STATUS_CODE_PROPERTY_POST_CODE_DESCRIPTIONS_ENABLED \r
-                  bit of PcdReportStatusCodeProperyMask is clear.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-ReportPostCodeDescriptionEnabled (\r
-  VOID\r
-  );\r
-\r
-\r
 /**\r
   Reports a status code with minimal parameters if the status code type is enabled.\r
 \r
 /**\r
   Reports a status code with minimal parameters if the status code type is enabled.\r
 \r
@@ -614,12 +371,12 @@ ReportPostCodeDescriptionEnabled (
   PcdReportStatusCodeProperyMask, then call ReportStatusCode() passing in Type \r
   and Value.\r
 \r
   PcdReportStatusCodeProperyMask, then call ReportStatusCode() passing in Type \r
   and Value.\r
 \r
-  @param  Type   Status code type. \r
-  @param  Value  Status code value.\r
+  @param  Type   The status code type. \r
+  @param  Value  The status code value.\r
 \r
   @retval  EFI_SUCCESS       The status code was reported.\r
   @retval  EFI_DEVICE_ERROR  There status code could not be reported due to a device error.\r
 \r
   @retval  EFI_SUCCESS       The status code was reported.\r
   @retval  EFI_DEVICE_ERROR  There status code could not be reported due to a device error.\r
-  @retval  EFI_UNSUPPORTED   Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED   Report status code is not supported.\r
 \r
 **/\r
 #define REPORT_STATUS_CODE(Type,Value)                                                          \\r
 \r
 **/\r
 #define REPORT_STATUS_CODE(Type,Value)                                                          \\r
@@ -640,15 +397,17 @@ ReportPostCodeDescriptionEnabled (
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeWithDevicePath() \r
   passing in Type, Value, and DevicePath.\r
 \r
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeWithDevicePath() \r
   passing in Type, Value, and DevicePath.\r
 \r
-  @param  Type        Status code type. \r
-  @param  Value       Status code value.\r
+  @param  Type        The status code type. \r
+  @param  Value       The status code value.\r
   @param  DevicePath  Pointer to the Device Path Protocol to be reported.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported with the extended \r
                                  data specified by DevicePath.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
   @param  DevicePath  Pointer to the Device Path Protocol to be reported.\r
 \r
   @retval  EFI_SUCCESS           The status code was reported with the extended \r
                                  data specified by DevicePath.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_WITH_DEVICE_PATH(Type,Value,DevicePathParameter)                     \\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_WITH_DEVICE_PATH(Type,Value,DevicePathParameter)                     \\r
@@ -669,9 +428,9 @@ ReportPostCodeDescriptionEnabled (
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeWithExtendedData() \r
   passing in Type, Value, ExtendedData, and ExtendedDataSize.\r
 \r
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeWithExtendedData() \r
   passing in Type, Value, ExtendedData, and ExtendedDataSize.\r
 \r
-  @param  Type              Status code type. \r
-  @param  Value             Status code value.\r
-  @param  ExtendedData      Pointer to the extended data buffer to be reported.\r
+  @param  Type              The status code type. \r
+  @param  Value             The status code value.\r
+  @param  ExtendedData      The pointer to the extended data buffer to be reported.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer to\r
                             be reported.\r
 \r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer to\r
                             be reported.\r
 \r
@@ -679,7 +438,9 @@ ReportPostCodeDescriptionEnabled (
                                  data specified by ExtendedData and ExtendedDataSize.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
                                  data specified by ExtendedData and ExtendedDataSize.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_WITH_EXTENDED_DATA(Type,Value,ExtendedData,ExtendedDataSize)         \\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_WITH_EXTENDED_DATA(Type,Value,ExtendedData,ExtendedDataSize)         \\r
@@ -698,16 +459,15 @@ ReportPostCodeDescriptionEnabled (
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeEx() passing in Type, \r
   Value, Instance, CallerId, ExtendedDataGuid, ExtendedData, and ExtendedDataSize.\r
 \r
   PcdReportStatusCodeProperyMask, then call ReportStatusCodeEx() passing in Type, \r
   Value, Instance, CallerId, ExtendedDataGuid, ExtendedData, and ExtendedDataSize.\r
 \r
-  @param  Type              Status code type. \r
-  @param  Value             Status code value.\r
-  @param  Instance          Status code instance number.\r
-  @param  CallerId          Pointer to a GUID that identifies the caller of this \r
+  @param  Type              The status code type. \r
+  @param  Value             The status code value.\r
+  @param  Instance          The status code instance number.\r
+  @param  CallerId          The pointer to a GUID that identifies the caller of this \r
                             function.  If this parameter is NULL, then a caller \r
                             ID of gEfiCallerIdGuid is used.\r
   @param  ExtendedDataGuid  Pointer to the GUID for the extended data buffer.  \r
                             If this parameter is NULL, then a the status code \r
                             function.  If this parameter is NULL, then a caller \r
                             ID of gEfiCallerIdGuid is used.\r
   @param  ExtendedDataGuid  Pointer to the GUID for the extended data buffer.  \r
                             If this parameter is NULL, then a the status code \r
-                            standard header is filled in with \r
-                            gEfiStatusCodeSpecificDataGuid.\r
+                            standard header is filled in with an implementation dependent GUID.\r
   @param  ExtendedData      Pointer to the extended data buffer.  This is an \r
                             optional parameter that may be NULL.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer.\r
   @param  ExtendedData      Pointer to the extended data buffer.  This is an \r
                             optional parameter that may be NULL.\r
   @param  ExtendedDataSize  The size, in bytes, of the extended data buffer.\r
@@ -715,7 +475,9 @@ ReportPostCodeDescriptionEnabled (
   @retval  EFI_SUCCESS           The status code was reported.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section if it was specified.\r
   @retval  EFI_SUCCESS           The status code was reported.\r
   @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate the \r
                                  extended data section if it was specified.\r
-  @retval  EFI_UNSUPPORTED       Report status code is not supported\r
+  @retval  EFI_UNSUPPORTED       The report status code is not supported.\r
+  @retval  EFI_DEVICE_ERROR      A call to a Report Status Code Library function\r
+                                 is already in progress.\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_EX(Type,Value,Instance,CallerId,ExtendedDataGuid,ExtendedData,ExtendedDataSize)  \\r
 \r
 **/\r
 #define REPORT_STATUS_CODE_EX(Type,Value,Instance,CallerId,ExtendedDataGuid,ExtendedData,ExtendedDataSize)  \\r
@@ -727,37 +489,4 @@ ReportPostCodeDescriptionEnabled (
   ReportStatusCodeEx(Type,Value,Instance,CallerId,ExtendedDataGuid,ExtendedData,ExtendedDataSize)        :  \\r
   EFI_UNSUPPORTED\r
 \r
   ReportStatusCodeEx(Type,Value,Instance,CallerId,ExtendedDataGuid,ExtendedData,ExtendedDataSize)        :  \\r
   EFI_UNSUPPORTED\r
 \r
-/**\r
-  Sends an 32-bit value to a POST card.\r
-\r
-  If POST codes are enabled in PcdReportStatusCodeProperyMask, then call PostCode() \r
-  passing in Value.  Value is returned.\r
-\r
-  @param  Value  The 32-bit value to write to the POST card.\r
-\r
-  @return  Value\r
-\r
-**/\r
-#define POST_CODE(Value)  ReportPostCodeEnabled() ? PostCode(Value) : Value\r
-\r
-/**\r
-  Sends an 32-bit value to a POST and associated ASCII string.\r
-\r
-  If POST codes and POST code descriptions are enabled in \r
-  PcdReportStatusCodeProperyMask, then call PostCodeWithDescription() passing in \r
-  Value and Description.  If only POST codes are enabled, then call PostCode() \r
-  passing in Value.  Value is returned.\r
-\r
-  @param  Value        The 32-bit value to write to the POST card.\r
-  @param  Description  Pointer to an ASCII string that is a description of the \r
-                       POST code value.\r
-\r
-**/\r
-#define POST_CODE_WITH_DESCRIPTION(Value,Description)  \\r
-  ReportPostCodeEnabled()                        ?     \\r
-    (ReportPostCodeDescriptionEnabled()          ?     \\r
-      PostCodeWithDescription(Value,Description) :     \\r
-      PostCode(Value))                           :     \\r
-    Value\r
-\r
 #endif\r
 #endif\r