mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-04 05:25:45 +01:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3230 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			239 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
  Copyright (c) 2006, Intel Corporation                                                         
 | 
						|
  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.             
 | 
						|
 | 
						|
Module Name:
 | 
						|
 | 
						|
  DxeStatusCode.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  Header file of EFI DXE/RT Status Code.
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#ifndef __DXE_STATUS_CODE_H__
 | 
						|
#define __DXE_STATUS_CODE_H__
 | 
						|
 | 
						|
#include <Common/StatusCode.h>
 | 
						|
 | 
						|
//
 | 
						|
// Data hub worker definition 
 | 
						|
//
 | 
						|
#define MAX_NUMBER_DATAHUB_RECORDS                1000
 | 
						|
#define DATAHUB_BYTES_PER_RECORD                  EFI_STATUS_CODE_DATA_MAX_SIZE
 | 
						|
#define EMPTY_RECORD_TAG                          0xFF
 | 
						|
#define DATAHUB_STATUS_CODE_SIGNATURE             EFI_SIGNATURE_32 ('B', 'D', 'H', 'S')
 | 
						|
 | 
						|
//
 | 
						|
// Address type of pointer.
 | 
						|
// The point type always equal to PHYSICAL_MODE on IA32/X64/EBC architecture
 | 
						|
// Otherwise, VIRTUAL_MODE/PHYSICAL_MODE would be used on Ipf architecture, 
 | 
						|
// 
 | 
						|
typedef enum {
 | 
						|
  PHYSICAL_MODE,
 | 
						|
  VIRTUAL_MODE
 | 
						|
} PROCESSOR_MODE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINTN       Signature;
 | 
						|
  LIST_ENTRY  Node;
 | 
						|
 | 
						|
  UINT8       Data[sizeof (DATA_HUB_STATUS_CODE_DATA_RECORD) + EFI_STATUS_CODE_DATA_MAX_SIZE];
 | 
						|
} DATAHUB_STATUSCODE_RECORD;
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
// Runtime memory status code worker definition 
 | 
						|
// 
 | 
						|
typedef struct {
 | 
						|
  UINT32   RecordIndex;
 | 
						|
  UINT32   NumberOfRecords;
 | 
						|
  UINT32   MaxRecordsNumber;
 | 
						|
} RUNTIME_MEMORY_STATUSCODE_HEADER;
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  //
 | 
						|
  // Report operation nest status. 
 | 
						|
  // If it is set, then the report operation has nested.
 | 
						|
  // 
 | 
						|
  UINT32                            StatusCodeNestStatus;
 | 
						|
  //
 | 
						|
  // Runtime status code management header, the records buffer is following it.
 | 
						|
  // 
 | 
						|
  RUNTIME_MEMORY_STATUSCODE_HEADER  *RtMemoryStatusCodeTable[2];
 | 
						|
} DXE_STATUS_CODE_CONTROLLER;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  
 | 
						|
  Dispatch initialization request to sub status code devices based on 
 | 
						|
  customized feature flags.
 | 
						|
 
 | 
						|
**/
 | 
						|
VOID
 | 
						|
InitializationDispatcherWorker (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize serial status code worker.
 | 
						|
 
 | 
						|
  @return  The function always return EFI_SUCCESS
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EfiSerialStatusCodeInitializeWorker (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Convert status code value and extended data to readable ASCII string, send string to serial I/O device.
 | 
						|
 
 | 
						|
  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.
 | 
						|
 
 | 
						|
  @param  Value         Describes the current status of a hardware or software entity.  
 | 
						|
                        This included information about the class and subclass that is used to classify the entity 
 | 
						|
                        as well as an operation.  For progress codes, the operation is the current activity. 
 | 
						|
                        For error codes, it is the exception.  For debug codes, it is not defined at this time. 
 | 
						|
                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  
 | 
						|
                        Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.
 | 
						|
 
 | 
						|
  @param  Instance      The enumeration of a hardware or software entity within the system.  
 | 
						|
                        A system may contain multiple entities that match a class/subclass pairing. 
 | 
						|
                        The instance differentiates between them.  An instance of 0 indicates that instance information is unavailable, 
 | 
						|
                        not meaningful, or not relevant.  Valid instance numbers start with 1.
 | 
						|
 | 
						|
 | 
						|
  @param  CallerId      This optional parameter may be used to identify the caller. 
 | 
						|
                        This parameter allows the status code driver to apply different rules to different callers. 
 | 
						|
                        Type EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
 | 
						|
 | 
						|
 | 
						|
  @param  Data          This optional parameter may be used to pass additional data
 | 
						|
 
 | 
						|
  @retval EFI_SUCCESS         Success to report status code to serial I/O.
 | 
						|
  @retval EFI_DEVICE_ERROR    EFI serial device can not work after ExitBootService() is called .
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
SerialStatusCodeReportWorker (
 | 
						|
  IN EFI_STATUS_CODE_TYPE     CodeType,
 | 
						|
  IN EFI_STATUS_CODE_VALUE    Value,
 | 
						|
  IN UINT32                   Instance,
 | 
						|
  IN EFI_GUID                 *CallerId,
 | 
						|
  IN EFI_STATUS_CODE_DATA     *Data OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize runtime memory status code.
 | 
						|
 
 | 
						|
  @return  The function always return EFI_SUCCESS
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
RtMemoryStatusCodeInitializeWorker (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Report status code into runtime memory. If the runtime pool is full, roll back to the 
 | 
						|
  first record and overwrite it.
 | 
						|
 
 | 
						|
  @param  RtMemoryStatusCodeTable      
 | 
						|
                        Point to Runtime memory table header.
 | 
						|
 | 
						|
  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.
 | 
						|
 
 | 
						|
  @param  Value         Describes the current status of a hardware or software entity.  
 | 
						|
                        This included information about the class and subclass that is used to classify the entity 
 | 
						|
                        as well as an operation.  For progress codes, the operation is the current activity. 
 | 
						|
                        For error codes, it is the exception.  For debug codes, it is not defined at this time. 
 | 
						|
                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  
 | 
						|
                        Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.
 | 
						|
 
 | 
						|
  @param  Instance      The enumeration of a hardware or software entity within the system.  
 | 
						|
                        A system may contain multiple entities that match a class/subclass pairing. 
 | 
						|
                        The instance differentiates between them.  An instance of 0 indicates that instance information is unavailable, 
 | 
						|
                        not meaningful, or not relevant.  Valid instance numbers start with 1.
 | 
						|
 
 | 
						|
  @return               The function always return EFI_SUCCESS.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
RtMemoryStatusCodeReportWorker (
 | 
						|
  RUNTIME_MEMORY_STATUSCODE_HEADER      *RtMemoryStatusCodeTable,
 | 
						|
  IN EFI_STATUS_CODE_TYPE               CodeType,
 | 
						|
  IN EFI_STATUS_CODE_VALUE              Value,
 | 
						|
  IN UINT32                             Instance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize data hubstatus code.
 | 
						|
  Create a data hub listener.
 | 
						|
 
 | 
						|
  @return  The function always return EFI_SUCCESS
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
DataHubStatusCodeInitializeWorker (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Report status code into DataHub.
 | 
						|
 
 | 
						|
  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.
 | 
						|
 
 | 
						|
  @param  Value         Describes the current status of a hardware or software entity.  
 | 
						|
                        This included information about the class and subclass that is used to classify the entity 
 | 
						|
                        as well as an operation.  For progress codes, the operation is the current activity. 
 | 
						|
                        For error codes, it is the exception.  For debug codes, it is not defined at this time. 
 | 
						|
                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  
 | 
						|
                        Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.
 | 
						|
 
 | 
						|
  @param  Instance      The enumeration of a hardware or software entity within the system.  
 | 
						|
                        A system may contain multiple entities that match a class/subclass pairing. 
 | 
						|
                        The instance differentiates between them.  An instance of 0 indicates that instance information is unavailable, 
 | 
						|
                        not meaningful, or not relevant.  Valid instance numbers start with 1.
 | 
						|
 | 
						|
 | 
						|
  @param  CallerId      This optional parameter may be used to identify the caller. 
 | 
						|
                        This parameter allows the status code driver to apply different rules to different callers. 
 | 
						|
                        Type EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.
 | 
						|
 | 
						|
 | 
						|
  @param  Data          This optional parameter may be used to pass additional data
 | 
						|
 
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   Can not acquire record buffer.
 | 
						|
  @retval EFI_DEVICE_ERROR       EFI serial device can not work after ExitBootService() is called .
 | 
						|
  @retval EFI_SUCCESS            Success to cache status code and signal log data event.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
DataHubStatusCodeReportWorker (
 | 
						|
  IN EFI_STATUS_CODE_TYPE     CodeType,
 | 
						|
  IN EFI_STATUS_CODE_VALUE    Value,
 | 
						|
  IN UINT32                   Instance,
 | 
						|
  IN EFI_GUID                 *CallerId,
 | 
						|
  IN EFI_STATUS_CODE_DATA     *Data OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// declaration of DXE status code controller.
 | 
						|
// 
 | 
						|
extern DXE_STATUS_CODE_CONTROLLER gDxeStatusCode;
 | 
						|
 | 
						|
#endif
 |