TianoCore EDK2 master
Loading...
Searching...
No Matches
ExtendedFirmwarePerformance.h
Go to the documentation of this file.
1
10#ifndef __EXTENDED_FIRMWARE_PERFORMANCE_H__
11#define __EXTENDED_FIRMWARE_PERFORMANCE_H__
12
14
15//
16// Known performance tokens
17//
18#define SEC_TOK "SEC"
19#define DXE_TOK "DXE"
20#define PEI_TOK "PEI"
21#define BDS_TOK "BDS"
22#define DRIVERBINDING_START_TOK "DB:Start:"
23#define DRIVERBINDING_SUPPORT_TOK "DB:Support:"
24#define DRIVERBINDING_STOP_TOK "DB:Stop:"
25#define LOAD_IMAGE_TOK "LoadImage:"
26#define START_IMAGE_TOK "StartImage:"
27#define PEIM_TOK "PEIM"
28
29//
30// Misc defines
31//
32#define FPDT_RECORD_REVISION_1 (0x01)
33
34//
35// Length field in EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER is a UINT8, thus:
36//
37#define FPDT_MAX_PERF_RECORD_SIZE (MAX_UINT8)
38
39//
40// FPDT Record Types
41//
42#define FPDT_GUID_EVENT_TYPE 0x1010
43#define FPDT_DYNAMIC_STRING_EVENT_TYPE 0x1011
44#define FPDT_DUAL_GUID_STRING_EVENT_TYPE 0x1012
45#define FPDT_GUID_QWORD_EVENT_TYPE 0x1013
46#define FPDT_GUID_QWORD_STRING_EVENT_TYPE 0x1014
47
48//
49// EDKII extended Fpdt record structures
50//
51#define FPDT_STRING_EVENT_RECORD_NAME_LENGTH 24
52
53#pragma pack(1)
54//
55// FPDT Boot Performance Guid Event Record Structure
56//
57typedef struct {
65 UINT16 ProgressID;
70 UINT32 ApicID;
74 UINT64 Timestamp;
80
81//
82// FPDT Boot Performance Dynamic String Event Record Structure
83//
84typedef struct {
92 UINT16 ProgressID;
97 UINT32 ApicID;
101 UINT64 Timestamp;
110 CHAR8 String[0];
112
113//
114// FPDT Boot Performance Dual GUID String Event Record Structure
115//
116typedef struct {
129 UINT32 ApicID;
133 UINT64 Timestamp;
146 CHAR8 String[0];
148
149//
150// FPDT Boot Performance GUID Qword Event Record Structure
151//
152typedef struct {
165 UINT32 ApicID;
169 UINT64 Timestamp;
177 UINT64 Qword;
179
180//
181// FPDT Boot Performance GUID Qword String Event Record Structure
182//
183typedef struct {
196 UINT32 ApicID;
200 UINT64 Timestamp;
208 UINT64 Qword;
212 CHAR8 String[0];
214
215#pragma pack()
216
217//
218// Union of all FPDT records
219//
220typedef union {
222 FPDT_GUID_EVENT_RECORD GuidEvent;
223 FPDT_DYNAMIC_STRING_EVENT_RECORD DynamicStringEvent;
224 FPDT_DUAL_GUID_STRING_EVENT_RECORD DualGuidStringEvent;
225 FPDT_GUID_QWORD_EVENT_RECORD GuidQwordEvent;
226 FPDT_GUID_QWORD_STRING_EVENT_RECORD GuidQwordStringEvent;
228
229//
230// Union of all pointers to FPDT records
231//
232typedef union {
234 FPDT_GUID_EVENT_RECORD *GuidEvent;
235 FPDT_DYNAMIC_STRING_EVENT_RECORD *DynamicStringEvent;
236 FPDT_DUAL_GUID_STRING_EVENT_RECORD *DualGuidStringEvent;
237 FPDT_GUID_QWORD_EVENT_RECORD *GuidQwordEvent;
238 FPDT_GUID_QWORD_STRING_EVENT_RECORD *GuidQwordStringEvent;
240
246typedef struct {
247 UINT32 SizeOfAllEntries;
248 UINT32 LoadImageCount;
249 UINT32 HobIsFull;
251
252extern EFI_GUID gEdkiiFpdtExtendedFirmwarePerformanceGuid;
253
254#endif
Definition: Base.h:213