1 /** @file
2   GUID used to identify status code records HOB that originate from the PEI status code.
3 
4 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
6 This program and the accompanying materials are licensed and made available under
7 the terms and conditions of the BSD License that accompanies this distribution.
8 The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
10 
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14 **/
15 
16 #ifndef __MEMORY_STATUS_CODE_RECORD_H__
17 #define __MEMORY_STATUS_CODE_RECORD_H__
18 
19 ///
20 /// Global ID used to identify GUIDed HOBs that start with a structure of type
21 /// MEMORY_STATUSCODE_PACKET_HEADER, followed by an array of structures of type
22 /// MEMORY_STATUSCODE_RECORD.  These GUIDed HOBs record all the information
23 /// passed into the ReportStatusCode() service of PEI Services Table.
24 ///
25 ///  <pre>
26 ///  Memory status code records packet structure :
27 ///  +---------------+----------+----------+-----+----------+-----+----------+
28 ///  | Packet Header | Record 1 | Record 2 | ... + Record n | ... | Record m |
29 ///  +---------------+----------+----------+-----+----------+-----+----------+
30 ///                  ^                                 ^                     ^
31 ///                  +--------- RecordIndex -----------+                     |
32 ///                  +---------------- MaxRecordsNumber----------------------+
33 ///  </pre>
34 ///
35 #define MEMORY_STATUS_CODE_RECORD_GUID \
36   { \
37     0x60cc026, 0x4c0d, 0x4dda, {0x8f, 0x41, 0x59, 0x5f, 0xef, 0x0, 0xa5, 0x2} \
38   }
39 
40 ///
41 /// A header structure that is followed by an array of records that contain the
42 /// parameters passed into the ReportStatusCode() service in the PEI Services Table.
43 ///
44 typedef struct {
45   ///
46   /// Index of the packet.
47   ///
48   UINT16  PacketIndex;
49   ///
50   /// The number of active records in the packet.
51   ///
52   UINT16  RecordIndex;
53   ///
54   /// The maximum number of records that the packet can store.
55   ///
56   UINT32  MaxRecordsNumber;
57 } MEMORY_STATUSCODE_PACKET_HEADER;
58 
59 ///
60 /// A header structure that is followed by an array of records that contain the
61 /// parameters passed into the ReportStatusCode() service in the DXE Services Table.
62 ///
63 typedef struct {
64   ///
65   /// The index pointing to the last recored being stored.
66   ///
67   UINT32   RecordIndex;
68   ///
69   /// The number of records being stored.
70   ///
71   UINT32   NumberOfRecords;
72   ///
73   /// The maximum number of records that can be stored.
74   ///
75   UINT32   MaxRecordsNumber;
76 } RUNTIME_MEMORY_STATUSCODE_HEADER;
77 
78 ///
79 /// A structure that contains the parameters passed into the ReportStatusCode()
80 /// service in the PEI Services Table.
81 ///
82 typedef struct {
83   ///
84   /// Status Code type to be reported.
85   ///
86   EFI_STATUS_CODE_TYPE   CodeType;
87 
88   ///
89   /// An operation, plus value information about the class and subclass, used to
90   /// classify the hardware and software entity.
91   ///
92   EFI_STATUS_CODE_VALUE  Value;
93 
94   ///
95   /// The enumeration of a hardware or software entity within
96   /// the system. Valid instance numbers start with the number 1.
97   ///
98   UINT32                 Instance;
99 } MEMORY_STATUSCODE_RECORD;
100 
101 extern EFI_GUID gMemoryStatusCodeRecordGuid;
102 
103 #endif
104