summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Include/Guid/MemoryStatusCodeRecord.h
blob: c435aab8f937d93dbe2d8634c5d94d7674b69378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/** @file
  GUID used to identify status code records HOB that originate from the PEI status code    
  
  Copyright (c) 2006 - 2009, Intel Corporation                                                         
  All rights reserved. This program and the accompanying materials                          
  are licensed and made available under the terms and conditions of the BSD License         
  which accompanies this distribution.  The full text of the license may be found at        
  http://opensource.org/licenses/bsd-license.php                                            
                                                                                            
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

**/

#ifndef __MEMORY_STATUS_CODE_RECORD_H__
#define __MEMORY_STATUS_CODE_RECORD_H__

///
/// Global ID used to identify GUIDed HOBs that start with a structure of type 
/// MEMORY_STATUSCODE_PACKET_HEADER followed by an arry of structures of type 
/// MEMORY_STATUSCODE_RECORD.  These GUIDed HOBs record all the information 
/// passed into the ReportStatusCode() service of PEI Services Table.
///
///  <pre>
///  Memory status code records packet structure :
///  +---------------+----------+----------+-----+----------+-----+----------+
///  | Packet Header | Record 1 | Record 2 | ... + Record n | ... | Record m |
///  +---------------+----------+----------+-----+----------+-----+----------+
///                  ^                                 ^                     ^
///                  +--------- RecordIndex -----------+                     |
///                  +---------------- MaxRecordsNumber----------------------+
///  </pre>
///
#define MEMORY_STATUS_CODE_RECORD_GUID \
  { \
    0x60cc026, 0x4c0d, 0x4dda, {0x8f, 0x41, 0x59, 0x5f, 0xef, 0x0, 0xa5, 0x2} \
  }

///
/// A header structure that is followed by an array of records that contain the 
/// parameters passed into the ReportStatusCode() service in the PEI Services Table.
///
typedef struct {
  ///
  /// Index of the packet
  ///
  UINT16  PacketIndex;
  ///
  /// The number of active records in the packet
  ///
  UINT16  RecordIndex;
  ///
  /// The maximum number of records that the packet can store
  ///
  UINT32  MaxRecordsNumber;
} MEMORY_STATUSCODE_PACKET_HEADER;

///
/// A structure that contains the parameters passed into the ReportStatusCode() 
/// service in the PEI Services Table.
///
typedef struct {
  ///
  /// Status Code type to be reported.
  ///
  EFI_STATUS_CODE_TYPE   CodeType;

  ///
  /// Valu information about the class and subclass is used to
  /// classify the hardware and software entity as well as an operation.
  ///
  EFI_STATUS_CODE_VALUE  Value;

  ///
  /// The enumeration of a hardware or software entity within
  /// the system. Valid instance numbers start with 1
  ///
  UINT32                 Instance;
} MEMORY_STATUSCODE_RECORD;

extern EFI_GUID gMemoryStatusCodeRecordGuid;

#endif