| /*++ | |
| Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| AcpiTable.h | |
| Abstract: | |
| ACPI Table Protocol from the UEFI 2.1 specification. | |
| This protocol may be used to install or remove an ACPI table from a platform. | |
| --*/ | |
| #ifndef __ACPI_TABLE_H__ | |
| #define __ACPI_TABLE_H__ | |
| #include "Acpi.h" | |
| // | |
| // Global ID for the Acpi Table Protocol | |
| // | |
| #define EFI_ACPI_TABLE_PROTOCOL_GUID \ | |
| { \ | |
| 0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \ | |
| } | |
| EFI_FORWARD_DECLARATION (EFI_ACPI_TABLE_PROTOCOL); | |
| #define UEFI_ACPI_TABLE_SIGNATURE EFI_SIGNATURE_32 ('U', 'E', 'F', 'I') | |
| #pragma pack(1) | |
| typedef struct { | |
| EFI_ACPI_DESCRIPTION_HEADER Header; | |
| EFI_GUID Identifier; | |
| UINT16 DataOffset; | |
| } EFI_ACPI_TABLE; | |
| #pragma pack() | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_ACPI_TABLE_INSTALL_ACPI_TABLE) ( | |
| IN EFI_ACPI_TABLE_PROTOCOL *This, | |
| IN VOID *AcpiTableBuffer, | |
| IN UINTN AcpiTableBufferSize, | |
| OUT UINTN *TableKey | |
| ) | |
| /*++ | |
| Routine Description: | |
| Installs an ACPI table into the RSDT/XSDT. | |
| Arguments: | |
| This - Protocol instance pointer. | |
| AcpiTableBuffer - A pointer to a buffer containing the ACPI table to be installed. | |
| AcpiTableBufferSize - Specifies the size, in bytes, of the AcpiTableBuffer buffer. | |
| TableKey - Reurns a key to refer to the ACPI table. | |
| Returns: | |
| EFI_SUCCESS - The table was successfully inserted. | |
| EFI_INVALID_PARAMETER - Either AcpiTableBuffer is NULL, TableKey is NULL, or AcpiTableBufferSize | |
| and the size field embedded in the ACPI table pointed to by AcpiTableBuffer | |
| are not in sync. | |
| EFI_OUT_OF_RESOURCES - Insufficient resources exist to complete the request. | |
| --*/ | |
| ; | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE) ( | |
| IN EFI_ACPI_TABLE_PROTOCOL *This, | |
| IN UINTN TableKey | |
| ) | |
| /*++ | |
| Routine Description: | |
| Removes an ACPI table from the RSDT/XSDT. | |
| Arguments: | |
| This - Protocol instance pointer. | |
| TableKey - Specifies the table to uninstall. The key was returned from InstallAcpiTable(). | |
| Returns: | |
| EFI_SUCCESS - The table was successfully uninstalled. | |
| EFI_NOT_FOUND - TableKey does not refer to a valid key for a table entry. | |
| --*/ | |
| ; | |
| // | |
| // Interface structure for the ACPI Table Protocol | |
| // | |
| struct _EFI_ACPI_TABLE_PROTOCOL { | |
| EFI_ACPI_TABLE_INSTALL_ACPI_TABLE InstallAcpiTable; | |
| EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable; | |
| }; | |
| extern EFI_GUID gEfiAcpiTableProtocolGuid; | |
| #endif |