The patch enhances the SmmRuntimeDxeReportStatusCodeLibFramework instance to reduce the library dependency, since DebugLib, UefiBootServicesTableLib and original SmmRuntimeDxeReportStatusCodeLibFramework may result in the circular dependency. [Impaction]: It is backward-compatible. [Reference Info]: N/A git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4919 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			133 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Internal Header file of Report Status Code Library for RUNTIME
 | 
						|
  DXE Phase.
 | 
						|
 | 
						|
  Copyright (c) 2006 - 2007, Intel Corporation<BR>
 | 
						|
  All rights reserved. This program and the accompanying materials
 | 
						|
  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
#ifndef __REPORT_STATUS_CODE_LIB_INTERNAL__H
 | 
						|
#define __REPORT_STATUS_CODE_LIB_INTERNAL__H
 | 
						|
 | 
						|
#include <FrameworkDxe.h>
 | 
						|
 | 
						|
#include <Library/ReportStatusCodeLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/UefiRuntimeServicesTableLib.h>
 | 
						|
 | 
						|
#include <Guid/StatusCodeDataTypeId.h>
 | 
						|
#include <Protocol/StatusCode.h>
 | 
						|
 | 
						|
#include <FrameworkModuleBase.h>
 | 
						|
#include <DebugInfo.h>
 | 
						|
 | 
						|
/**
 | 
						|
  Locatet he report status code service.
 | 
						|
 | 
						|
  @return     EFI_REPORT_STATUS_CODE    function point to
 | 
						|
              ReportStatusCode.
 | 
						|
**/
 | 
						|
EFI_REPORT_STATUS_CODE
 | 
						|
InternalGetReportStatusCode (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Internal worker function that reports a status code through the Status Code Protocol
 | 
						|
 | 
						|
  This function checks to see if a Status Code Protocol is present in the handle
 | 
						|
  database.  If a Status Code Protocol is not present, then EFI_UNSUPPORTED is
 | 
						|
  returned.  If a Status Code Protocol is present, then it is cached in gStatusCode,
 | 
						|
  and the ReportStatusCode() service of the Status Code Protocol is called passing in
 | 
						|
  Type, Value, Instance, CallerId, and Data.  The result of this call is returned.
 | 
						|
 | 
						|
  @param  Type              Status code type.
 | 
						|
  @param  Value             Status code value.
 | 
						|
  @param  Instance          Status code instance number.
 | 
						|
  @param  CallerId          Pointer to a GUID that identifies the caller of this
 | 
						|
                            function.  This is an optional parameter that may be
 | 
						|
                            NULL.
 | 
						|
  @param  Data              Pointer to the extended data buffer.  This is an
 | 
						|
                            optional parameter that may be NULL.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           The status code was reported.
 | 
						|
  @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to report the status code.
 | 
						|
  @retval  EFI_UNSUPPORTED       Status Code Protocol is not available.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
InternalReportStatusCode (
 | 
						|
  IN EFI_STATUS_CODE_TYPE     Type,
 | 
						|
  IN EFI_STATUS_CODE_VALUE    Value,
 | 
						|
  IN UINT32                   Instance,
 | 
						|
  IN CONST EFI_GUID           *CallerId OPTIONAL,
 | 
						|
  IN EFI_STATUS_CODE_DATA     *Data     OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Reports a status code with full parameters.
 | 
						|
 | 
						|
  The function reports a status code.  If ExtendedData is NULL and ExtendedDataSize
 | 
						|
  is 0, then an extended data buffer is not reported.  If ExtendedData is not
 | 
						|
  NULL and ExtendedDataSize is not 0, then an extended data buffer is allocated.
 | 
						|
  ExtendedData is assumed not have the standard status code header, so this function
 | 
						|
  is responsible for allocating a buffer large enough for the standard header and
 | 
						|
  the extended data passed into this function.  The standard header is filled in
 | 
						|
  with a GUID specified by ExtendedDataGuid.  If ExtendedDataGuid is NULL, then a
 | 
						|
  GUID of gEfiStatusCodeSpecificDatauid is used.  The status code is reported with
 | 
						|
  an instance specified by Instance and a caller ID specified by CallerId.  If
 | 
						|
  CallerId is NULL, then a caller ID of gEfiCallerIdGuid is used.
 | 
						|
 | 
						|
  ReportStatusCodeEx()must actively prevent recursion.  If ReportStatusCodeEx()
 | 
						|
  is called while processing another any other Report Status Code Library function,
 | 
						|
  then ReportStatusCodeEx() must return EFI_DEVICE_ERROR immediately.
 | 
						|
 | 
						|
  If ExtendedData is NULL and ExtendedDataSize is not zero, then ASSERT().
 | 
						|
  If ExtendedData is not NULL and ExtendedDataSize is zero, then ASSERT().
 | 
						|
 | 
						|
  @param  Type              Status code type.
 | 
						|
  @param  Value             Status code value.
 | 
						|
  @param  Instance          Status code instance number.
 | 
						|
  @param  CallerId          Pointer to a GUID that identifies the caller of this
 | 
						|
                            function.  If this parameter is NULL, then a caller
 | 
						|
                            ID of gEfiCallerIdGuid is used.
 | 
						|
  @param  ExtendedDataGuid  Pointer to the GUID for the extended data buffer.
 | 
						|
                            If this parameter is NULL, then a the status code
 | 
						|
                            standard header is filled in with
 | 
						|
                            gEfiStatusCodeSpecificDataGuid.
 | 
						|
  @param  ExtendedData      Pointer to the extended data buffer.  This is an
 | 
						|
                            optional parameter that may be NULL.
 | 
						|
  @param  ExtendedDataSize  The size, in bytes, of the extended data buffer.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           The status code was reported.
 | 
						|
  @retval  EFI_OUT_OF_RESOURCES  There were not enough resources to allocate
 | 
						|
                                 the extended data section if it was specified.
 | 
						|
  @retval  EFI_UNSUPPORTED       Report status code is not supported
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
InternalReportStatusCodeEx (
 | 
						|
  IN EFI_STATUS_CODE_TYPE   Type,
 | 
						|
  IN EFI_STATUS_CODE_VALUE  Value,
 | 
						|
  IN UINT32                 Instance,
 | 
						|
  IN CONST EFI_GUID         *CallerId          OPTIONAL,
 | 
						|
  IN CONST EFI_GUID         *ExtendedDataGuid  OPTIONAL,
 | 
						|
  IN CONST VOID             *ExtendedData      OPTIONAL,
 | 
						|
  IN UINTN                  ExtendedDataSize
 | 
						|
  );
 | 
						|
 | 
						|
extern EFI_REPORT_STATUS_CODE  mReportStatusCode;
 | 
						|
 | 
						|
#endif // __REPORT_STATUS_CODE_LIB_INTERNAL__H
 | 
						|
 |