]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/Include/Guid/SmmBaseThunkCommunication.h
Add 4 Framework/PI SMM thunk drivers. Combined use of these drivers can support usage...
[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
5 Copyright (c) 2009, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15#ifndef _SMM_BASE_THUNK_COMMUNICATION_H_\r
16#define _SMM_BASE_THUNK_COMMUNICATION_H_\r
17\r
18#include <Protocol/SmmBase.h>\r
19\r
20#define EFI_SMM_BASE_THUNK_COMMUNICATION_GUID \\r
21 { 0x6568a3d6, 0x15f, 0x4b4a, { 0x9c, 0x89, 0x1d, 0x14, 0x63, 0x14, 0x13, 0xa } }\r
22\r
23typedef struct {\r
24 EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
25 VOID *SourceBuffer;\r
26 UINTN SourceSize;\r
27 EFI_HANDLE *ImageHandle;\r
28 BOOLEAN LegacyIA32Binary;\r
29} SMMBASE_REGISTER_ARG;\r
30\r
31typedef struct {\r
32 EFI_HANDLE ImageHandle;\r
33} SMMBASE_UNREGISTER_ARG;\r
34\r
35typedef struct {\r
36 EFI_HANDLE SmmImageHandle;\r
37 EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress;\r
38 BOOLEAN MakeLast;\r
39 BOOLEAN FloatingPointSave;\r
40} SMMBASE_REGISTER_CALLBACK_ARG;\r
41\r
42typedef struct {\r
43 EFI_MEMORY_TYPE PoolType;\r
44 UINTN Size;\r
45 VOID **Buffer;\r
46} SMMBASE_ALLOCATE_POOL_ARG;\r
47\r
48typedef struct {\r
49 VOID *Buffer;\r
50} SMMBASE_FREE_POOL_ARG;\r
51\r
52typedef union {\r
53 SMMBASE_REGISTER_ARG Register;\r
54 SMMBASE_UNREGISTER_ARG UnRegister;\r
55 SMMBASE_REGISTER_CALLBACK_ARG RegisterCallback;\r
56 SMMBASE_ALLOCATE_POOL_ARG AllocatePool;\r
57 SMMBASE_FREE_POOL_ARG FreePool;\r
58} SMMBASE_FUNCTION_ARGS;\r
59\r
60typedef enum {\r
61 SMMBASE_REGISTER,\r
62 SMMBASE_UNREGISTER,\r
63 SMMBASE_REGISTER_CALLBACK,\r
64 SMMBASE_ALLOCATE_POOL,\r
65 SMMBASE_FREE_POOL,\r
66} SMMBASE_FUNCTION;\r
67\r
68typedef struct {\r
69 SMMBASE_FUNCTION Function;\r
70 EFI_STATUS Status;\r
71 SMMBASE_FUNCTION_ARGS Args;\r
72} SMMBASE_FUNCTION_DATA;\r
73\r
74#pragma pack(1)\r
75typedef struct {\r
76 EFI_GUID HeaderGuid;\r
77 UINTN MessageLength;\r
78 SMMBASE_FUNCTION_DATA FunctionData;\r
79} SMMBASETHUNK_COMMUNICATION_DATA;\r
80#pragma pack()\r
81\r
82extern EFI_GUID gEfiSmmBaseThunkCommunicationGuid;\r
83\r
84#endif\r
85\r