1 /** @file
2   UEFI ACPI Data Table Definition.
3 
4 Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available under
6 the terms and conditions of the BSD License that accompanies this distribution.
7 The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php.
9 
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 
15 #ifndef __UEFI_ACPI_DATA_TABLE_H__
16 #define __UEFI_ACPI_DATA_TABLE_H__
17 
18 #include <IndustryStandard/Acpi.h>
19 
20 #pragma pack(1)
21 typedef struct {
22   EFI_ACPI_DESCRIPTION_HEADER   Header;
23   GUID                          Identifier;
24   UINT16                        DataOffset;
25 } EFI_ACPI_DATA_TABLE;
26 
27 typedef struct {
28   EFI_ACPI_DATA_TABLE  UefiAcpiDataTable;
29   UINT32               SwSmiNumber;
30   UINT64               BufferPtrAddress;
31 } EFI_SMM_COMMUNICATION_ACPI_TABLE;
32 
33 ///
34 /// To avoid confusion in interpreting frames, the communication buffer should always
35 /// begin with EFI_SMM_COMMUNICATE_HEADER
36 ///
37 typedef struct {
38   ///
39   /// Allows for disambiguation of the message format.
40   ///
41   EFI_GUID  HeaderGuid;
42   ///
43   /// Describes the size of Data (in bytes) and does not include the size of the header.
44   ///
45   UINTN     MessageLength;
46   ///
47   /// Designates an array of bytes that is MessageLength in size.
48   ///
49   UINT8     Data[1];
50 } EFI_SMM_COMMUNICATE_HEADER;
51 
52 #pragma pack()
53 
54 #endif
55 
56