]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/Include/Guid/SmmBaseThunkCommunication.h
Grammatical and disclaimer changes (does not follow internal C coding stds.)
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / Include / Guid / SmmBaseThunkCommunication.h
CommitLineData
9e620719 1/** @file\r
2 GUID and data structures for communication between SMM Base on SMM Base2 Thunk driver\r
3 and SmmBaseHelper driver.\r
4\r
63436673 5Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved<BR>\r
6Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\r
7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php.\r
9e620719 11\r
63436673 12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
9e620719 14\r
15**/\r
16#ifndef _SMM_BASE_THUNK_COMMUNICATION_H_\r
17#define _SMM_BASE_THUNK_COMMUNICATION_H_\r
18\r
19#include <Protocol/SmmBase.h>\r
20\r
21#define EFI_SMM_BASE_THUNK_COMMUNICATION_GUID \\r
22 { 0x6568a3d6, 0x15f, 0x4b4a, { 0x9c, 0x89, 0x1d, 0x14, 0x63, 0x14, 0x13, 0xa } }\r
23\r
24typedef struct {\r
25 EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
26 VOID *SourceBuffer;\r
27 UINTN SourceSize;\r
28 EFI_HANDLE *ImageHandle;\r
29 BOOLEAN LegacyIA32Binary;\r
30} SMMBASE_REGISTER_ARG;\r
31\r
32typedef struct {\r
33 EFI_HANDLE ImageHandle;\r
34} SMMBASE_UNREGISTER_ARG;\r
35\r
36typedef struct {\r
37 EFI_HANDLE SmmImageHandle;\r
38 EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress;\r
39 BOOLEAN MakeLast;\r
40 BOOLEAN FloatingPointSave;\r
41} SMMBASE_REGISTER_CALLBACK_ARG;\r
42\r
43typedef struct {\r
44 EFI_MEMORY_TYPE PoolType;\r
45 UINTN Size;\r
46 VOID **Buffer;\r
47} SMMBASE_ALLOCATE_POOL_ARG;\r
48\r
49typedef struct {\r
50 VOID *Buffer;\r
51} SMMBASE_FREE_POOL_ARG;\r
52\r
bade9bf5 53typedef struct {\r
54 EFI_HANDLE ImageHandle;\r
55 VOID *CommunicationBuffer;\r
56 UINTN *SourceSize;\r
57} SMMBASE_COMMUNICATE_ARG;\r
58\r
9e620719 59typedef union {\r
60 SMMBASE_REGISTER_ARG Register;\r
61 SMMBASE_UNREGISTER_ARG UnRegister;\r
62 SMMBASE_REGISTER_CALLBACK_ARG RegisterCallback;\r
63 SMMBASE_ALLOCATE_POOL_ARG AllocatePool;\r
64 SMMBASE_FREE_POOL_ARG FreePool;\r
bade9bf5 65 SMMBASE_COMMUNICATE_ARG Communicate;\r
9e620719 66} SMMBASE_FUNCTION_ARGS;\r
67\r
68typedef enum {\r
26a76fbc
LG
69 SmmBaseFunctionRegister,\r
70 SmmBaseFunctionUnregister,\r
71 SmmBaseFunctionRegisterCallback,\r
72 SmmBaseFunctionAllocatePool,\r
73 SmmBaseFunctionFreePool,\r
74 SmmBaseFunctionCommunicate\r
9e620719 75} SMMBASE_FUNCTION;\r
76\r
77typedef struct {\r
78 SMMBASE_FUNCTION Function;\r
79 EFI_STATUS Status;\r
80 SMMBASE_FUNCTION_ARGS Args;\r
81} SMMBASE_FUNCTION_DATA;\r
82\r
83#pragma pack(1)\r
84typedef struct {\r
85 EFI_GUID HeaderGuid;\r
86 UINTN MessageLength;\r
87 SMMBASE_FUNCTION_DATA FunctionData;\r
88} SMMBASETHUNK_COMMUNICATION_DATA;\r
89#pragma pack()\r
90\r
91extern EFI_GUID gEfiSmmBaseThunkCommunicationGuid;\r
92\r
93#endif\r
94\r