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