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