]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Guid/SmmVariableCommon.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Include / Guid / SmmVariableCommon.h
CommitLineData
d00ed85e 1/** @file\r
2 The file defined some common structures used for communicating between SMM variable module and SMM variable wrapper module.\r
3\r
efb01a10 4Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
d00ed85e 6\r
7**/\r
8\r
9#ifndef _SMM_VARIABLE_COMMON_H_\r
10#define _SMM_VARIABLE_COMMON_H_\r
11\r
efb01a10
SZ
12#include <Protocol/VarCheck.h>\r
13\r
d00ed85e 14#define EFI_SMM_VARIABLE_WRITE_GUID \\r
15 { 0x93ba1826, 0xdffb, 0x45dd, { 0x82, 0xa7, 0xe7, 0xdc, 0xaa, 0x3b, 0xbd, 0xf3 } }\r
16\r
17extern EFI_GUID gSmmVariableWriteGuid;\r
18\r
19//\r
fa0737a8
SZ
20// This structure is used for SMM variable. the collected statistics data is saved in SMRAM. It can be got from\r
21// SMI handler. The communication buffer should be:\r
d00ed85e 22// EFI_SMM_COMMUNICATE_HEADER + SMM_VARIABLE_COMMUNICATE_HEADER + payload.\r
23//\r
24typedef struct {\r
25 UINTN Function;\r
26 EFI_STATUS ReturnStatus;\r
27 UINT8 Data[1];\r
28} SMM_VARIABLE_COMMUNICATE_HEADER;\r
29\r
30//\r
31// The payload for this function is SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE.\r
32//\r
33#define SMM_VARIABLE_FUNCTION_GET_VARIABLE 1\r
34//\r
35// The payload for this function is SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME.\r
fa0737a8 36//\r
d00ed85e 37#define SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME 2\r
38//\r
39// The payload for this function is SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE.\r
fa0737a8 40//\r
d00ed85e 41#define SMM_VARIABLE_FUNCTION_SET_VARIABLE 3\r
42//\r
43// The payload for this function is SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO.\r
fa0737a8 44//\r
d00ed85e 45#define SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO 4\r
46//\r
47// It is a notify event, no extra payload for this function.\r
fa0737a8 48//\r
d00ed85e 49#define SMM_VARIABLE_FUNCTION_READY_TO_BOOT 5\r
50//\r
51// It is a notify event, no extra payload for this function.\r
fa0737a8 52//\r
d00ed85e 53#define SMM_VARIABLE_FUNCTION_EXIT_BOOT_SERVICE 6\r
54//\r
fa0737a8 55// The payload for this function is VARIABLE_INFO_ENTRY. The GUID in EFI_SMM_COMMUNICATE_HEADER\r
d00ed85e 56// is gEfiSmmVariableProtocolGuid.\r
57//\r
58#define SMM_VARIABLE_FUNCTION_GET_STATISTICS 7\r
ff843847
RN
59//\r
60// The payload for this function is SMM_VARIABLE_COMMUNICATE_LOCK_VARIABLE\r
61//\r
62#define SMM_VARIABLE_FUNCTION_LOCK_VARIABLE 8\r
d00ed85e 63\r
efb01a10
SZ
64#define SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_SET 9\r
65\r
66#define SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET 10\r
67\r
fa0737a8
SZ
68#define SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE 11\r
69\r
d00ed85e 70///\r
71/// Size of SMM communicate header, without including the payload.\r
72///\r
73#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data))\r
74\r
75///\r
76/// Size of SMM variable communicate header, without including the payload.\r
77///\r
78#define SMM_VARIABLE_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_VARIABLE_COMMUNICATE_HEADER, Data))\r
79\r
80///\r
81/// This structure is used to communicate with SMI handler by SetVariable and GetVariable.\r
82///\r
83typedef struct {\r
84 EFI_GUID Guid;\r
85 UINTN DataSize;\r
86 UINTN NameSize;\r
fa0737a8 87 UINT32 Attributes;\r
d00ed85e 88 CHAR16 Name[1];\r
89} SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE;\r
90\r
91///\r
92/// This structure is used to communicate with SMI handler by GetNextVariableName.\r
93///\r
94typedef struct {\r
95 EFI_GUID Guid;\r
0c55190f 96 UINTN NameSize; // Return name buffer size\r
d00ed85e 97 CHAR16 Name[1];\r
98} SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME;\r
99\r
100///\r
101/// This structure is used to communicate with SMI handler by QueryVariableInfo.\r
102///\r
103typedef struct {\r
104 UINT64 MaximumVariableStorageSize;\r
105 UINT64 RemainingVariableStorageSize;\r
106 UINT64 MaximumVariableSize;\r
fa0737a8 107 UINT32 Attributes;\r
d00ed85e 108} SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO;\r
109\r
ff843847
RN
110typedef SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME SMM_VARIABLE_COMMUNICATE_LOCK_VARIABLE;\r
111\r
efb01a10
SZ
112typedef struct {\r
113 EFI_GUID Guid;\r
114 UINTN NameSize;\r
115 VAR_CHECK_VARIABLE_PROPERTY VariableProperty;\r
116 CHAR16 Name[1];\r
117} SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY;\r
118\r
fa0737a8
SZ
119typedef struct {\r
120 UINTN VariablePayloadSize;\r
121} SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE;\r
122\r
123#endif // _SMM_VARIABLE_COMMON_H_\r