From ad1a179818e9eba78cbdce2694ff87e9228c48fd Mon Sep 17 00:00:00 2001 From: vanjeff Date: Fri, 29 Jun 2007 03:38:49 +0000 Subject: 1. add EdkSerialPortLibNull.inf 2. add StatusCode Dxe and Pei modules git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2877 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/StatusCode/Dxe/DxeStatusCode.h | 245 +++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h (limited to 'IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h') diff --git a/IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h b/IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h new file mode 100644 index 0000000000..596c17313a --- /dev/null +++ b/IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h @@ -0,0 +1,245 @@ +/*++ + + 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 header file for this module. +// +#include "CommonHeader.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; + EFI_STATUS_CODE_TYPE CodeType; + EFI_STATUS_CODE_VALUE Value; + UINT32 Instance; + EFI_GUID CallerId; + EFI_STATUS_CODE_DATA Data; + UINT8 ExtendData[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 -- cgit v1.2.3