1b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang/*++ 2b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 34b1e11214a01fa6994e3f77c2481f2723a32221bhhtianCopyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR> 44b1e11214a01fa6994e3f77c2481f2723a32221bhhtianThis program and the accompanying materials 5b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangare licensed and made available under the terms and conditions of the BSD License 6b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangwhich accompanies this distribution. The full text of the license may be found at 7b38907a6d41515f48fe01a7c3d7c6b84b269926bqwanghttp://opensource.org/licenses/bsd-license.php 8b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 9b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 12b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangModule Name: 13b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 14b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang BsDataHubStatusCode.h 15b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 16b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangAbstract: 17b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 18b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang Header for the status code data hub logging component 19b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 20b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang--*/ 21b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 22b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#ifndef _EFI_BS_DATA_HUB_STATUS_CODE_H_ 23b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#define _EFI_BS_DATA_HUB_STATUS_CODE_H_ 24b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 25b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 26b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// Statements that include other files. 27b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 28b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include "Tiano.h" 29b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include "EfiCommonLib.h" 30b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include "EfiRuntimeLib.h" 31b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include "EfiPrintLib.h" 32b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include "EfiStatusCode.h" 33b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 34b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 35b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// Dependent protocols 36b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 37b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include EFI_PROTOCOL_DEPENDENCY (DataHub) 38b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 39b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 40b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// Consumed protocols 41b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 42b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include EFI_ARCH_PROTOCOL_CONSUMER (StatusCode) 43b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 44b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 45b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// GUID definitions 46b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 47b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include EFI_GUID_DEFINITION (StatusCode) 48b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include EFI_GUID_DEFINITION (StatusCodeCallerId) 49b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#include EFI_GUID_DEFINITION (StatusCodeDataTypeId) 50b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 51b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 52b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// Private data declarations 53b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 54b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#define MAX_RECORD_NUM 1000 55b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#define BYTES_PER_RECORD EFI_STATUS_CODE_DATA_MAX_SIZE 56b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#define BYTES_PER_BUFFER (BYTES_PER_RECORD * sizeof (UINT8)) 57b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 58b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang#define BS_DATA_HUB_STATUS_CODE_SIGNATURE EFI_SIGNATURE_32 ('B', 'D', 'H', 'S') 59b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 60b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangtypedef struct { 61b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang UINTN Signature; 6295d675b5272d76105e2109a11d8b35f416be8b29qwang EFI_LIST_ENTRY Node; 6395d675b5272d76105e2109a11d8b35f416be8b29qwang UINT8 Data[BYTES_PER_RECORD]; 6495d675b5272d76105e2109a11d8b35f416be8b29qwang} DATAHUB_STATUSCODE_RECORD; 65b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 66b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 67b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// Function prototypes 68b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang// 6995d675b5272d76105e2109a11d8b35f416be8b29qwangEFI_STATUS 7095d675b5272d76105e2109a11d8b35f416be8b29qwangEFIAPI 7195d675b5272d76105e2109a11d8b35f416be8b29qwangBsDataHubInitializeStatusCode ( 7295d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_HANDLE ImageHandle, 7395d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_SYSTEM_TABLE *SystemTable 74b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang ); 75b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang/*++ 76b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 77b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangRoutine Description: 78b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 7995d675b5272d76105e2109a11d8b35f416be8b29qwang Install a data hub listener. 80b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 81b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangArguments: 82b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 8395d675b5272d76105e2109a11d8b35f416be8b29qwang (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT) 84b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 85b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangReturns: 86b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 8795d675b5272d76105e2109a11d8b35f416be8b29qwang EFI_SUCCESS - Logging Hub protocol installed 8895d675b5272d76105e2109a11d8b35f416be8b29qwang Other - No protocol installed, unload driver. 89b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 90b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang--*/ 91b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 92b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangEFI_STATUS 9395d675b5272d76105e2109a11d8b35f416be8b29qwangEFIAPI 9495d675b5272d76105e2109a11d8b35f416be8b29qwangBsDataHubReportStatusCode ( 9595d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_STATUS_CODE_TYPE CodeType, 9695d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_STATUS_CODE_VALUE Value, 9795d675b5272d76105e2109a11d8b35f416be8b29qwang IN UINT32 Instance, 9895d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_GUID * CallerId, 9995d675b5272d76105e2109a11d8b35f416be8b29qwang IN EFI_STATUS_CODE_DATA * Data OPTIONAL 100b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang ); 101b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang/*++ 102b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 103b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangRoutine Description: 104b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 10595d675b5272d76105e2109a11d8b35f416be8b29qwang Boot service report status code listener. This function logs the status code 10695d675b5272d76105e2109a11d8b35f416be8b29qwang into the data hub. 10795d675b5272d76105e2109a11d8b35f416be8b29qwang 108b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangArguments: 109b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 11095d675b5272d76105e2109a11d8b35f416be8b29qwang Same as gRT->ReportStatusCode (See Tiano Runtime Specification) 111b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 112b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangReturns: 113b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 11495d675b5272d76105e2109a11d8b35f416be8b29qwang None 115b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 116b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang--*/ 117b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 11895d675b5272d76105e2109a11d8b35f416be8b29qwangVOID 119b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangEFIAPI 120b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangLogDataHubEventHandler ( 121b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang IN EFI_EVENT Event, 122b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang IN VOID *Context 123b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang ); 124b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang/*++ 125b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 126b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangRoutine Description: 127b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 128b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang The Event handler which will be notified to log data in Data Hub. 129b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 130b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangArguments: 131b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 132b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang Event - Instance of the EFI_EVENT to signal whenever data is 133b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang available to be logged in the system. 134b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang Context - Context of the event. 135b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 136b38907a6d41515f48fe01a7c3d7c6b84b269926bqwangReturns: 137b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 138b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang None. 139b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang 140b38907a6d41515f48fe01a7c3d7c6b84b269926bqwang--*/ 141b4e547b691eff1a3ade1a0e66a82cb69f49964f7qhuang#endif 142