]> git.proxmox.com Git - mirror_edk2.git/blobdiff - 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
diff --git a/EdkCompatibilityPkg/Compatibility/Include/Guid/SmmBaseThunkCommunication.h b/EdkCompatibilityPkg/Compatibility/Include/Guid/SmmBaseThunkCommunication.h
new file mode 100644 (file)
index 0000000..f8507e5
--- /dev/null
@@ -0,0 +1,85 @@
+/** @file\r
+  GUID and data structures for communication between SMM Base on SMM Base2 Thunk driver\r
+  and SmmBaseHelper driver.\r
+\r
+  Copyright (c) 2009, Intel Corporation\r
+  All rights reserved. This program and the accompanying materials\r
+  are licensed and made available under the terms and conditions of the BSD License\r
+  which accompanies this distribution.  The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+#ifndef  _SMM_BASE_THUNK_COMMUNICATION_H_\r
+#define  _SMM_BASE_THUNK_COMMUNICATION_H_\r
+\r
+#include <Protocol/SmmBase.h>\r
+\r
+#define EFI_SMM_BASE_THUNK_COMMUNICATION_GUID \\r
+  { 0x6568a3d6, 0x15f, 0x4b4a, { 0x9c, 0x89, 0x1d, 0x14, 0x63, 0x14, 0x13, 0xa } }\r
+\r
+typedef struct {\r
+  EFI_DEVICE_PATH_PROTOCOL       *FilePath;\r
+  VOID                           *SourceBuffer;\r
+  UINTN                          SourceSize;\r
+  EFI_HANDLE                     *ImageHandle;\r
+  BOOLEAN                        LegacyIA32Binary;\r
+} SMMBASE_REGISTER_ARG;\r
+\r
+typedef struct {\r
+  EFI_HANDLE                     ImageHandle;\r
+} SMMBASE_UNREGISTER_ARG;\r
+\r
+typedef struct {\r
+  EFI_HANDLE                     SmmImageHandle;\r
+  EFI_SMM_CALLBACK_ENTRY_POINT   CallbackAddress;\r
+  BOOLEAN                        MakeLast;\r
+  BOOLEAN                        FloatingPointSave;\r
+} SMMBASE_REGISTER_CALLBACK_ARG;\r
+\r
+typedef struct {\r
+  EFI_MEMORY_TYPE                PoolType;\r
+  UINTN                          Size;\r
+  VOID                           **Buffer;\r
+} SMMBASE_ALLOCATE_POOL_ARG;\r
+\r
+typedef struct {\r
+  VOID                           *Buffer;\r
+} SMMBASE_FREE_POOL_ARG;\r
+\r
+typedef union {\r
+  SMMBASE_REGISTER_ARG           Register;\r
+  SMMBASE_UNREGISTER_ARG         UnRegister;\r
+  SMMBASE_REGISTER_CALLBACK_ARG  RegisterCallback;\r
+  SMMBASE_ALLOCATE_POOL_ARG      AllocatePool;\r
+  SMMBASE_FREE_POOL_ARG          FreePool;\r
+} SMMBASE_FUNCTION_ARGS;\r
+\r
+typedef enum {\r
+  SMMBASE_REGISTER,\r
+  SMMBASE_UNREGISTER,\r
+  SMMBASE_REGISTER_CALLBACK,\r
+  SMMBASE_ALLOCATE_POOL,\r
+  SMMBASE_FREE_POOL,\r
+} SMMBASE_FUNCTION;\r
+\r
+typedef struct {\r
+  SMMBASE_FUNCTION               Function;\r
+  EFI_STATUS                     Status;\r
+  SMMBASE_FUNCTION_ARGS          Args;\r
+} SMMBASE_FUNCTION_DATA;\r
+\r
+#pragma pack(1)\r
+typedef struct {\r
+  EFI_GUID               HeaderGuid;\r
+  UINTN                  MessageLength;\r
+  SMMBASE_FUNCTION_DATA  FunctionData;\r
+} SMMBASETHUNK_COMMUNICATION_DATA;\r
+#pragma pack()\r
+\r
+extern EFI_GUID gEfiSmmBaseThunkCommunicationGuid;\r
+\r
+#endif\r
+\r