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