| /** @file |
| The file provides the protocol to install or remove an ACPI |
| table from a platform. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| This Protocol was introduced in UEFI Specification 2.3. |
| |
| **/ |
| |
| #ifndef __ACPI_TABLE_H___ |
| #define __ACPI_TABLE_H___ |
| |
| FILE_LICENCE ( BSD2_PATENT ); |
| |
| #define EFI_ACPI_TABLE_PROTOCOL_GUID \ |
| { 0xffe06bdd, 0x6107, 0x46a6, { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c }} |
| |
| typedef struct _EFI_ACPI_TABLE_PROTOCOL EFI_ACPI_TABLE_PROTOCOL; |
| |
| /** |
| |
| The InstallAcpiTable() function allows a caller to install an |
| ACPI table. When successful, the table will be linked by the |
| RSDT/XSDT. AcpiTableBuffer specifies the table to be installed. |
| InstallAcpiTable() will make a copy of the table and insert the |
| copy into the RSDT/XSDT. InstallAcpiTable() must insert the new |
| table at the end of the RSDT/XSDT. To prevent namespace |
| collision, ACPI tables may be created using UEFI ACPI table |
| format. If this protocol is used to install a table with a |
| signature already present in the system, the new table will not |
| replace the existing table. It is a platform implementation |
| decision to add a new table with a signature matching an |
| existing table or disallow duplicate table signatures and |
| return EFI_ACCESS_DENIED. On successful output, TableKey is |
| initialized with a unique key. Its value may be used in a |
| subsequent call to UninstallAcpiTable to remove an ACPI table. |
| If an EFI application is running at the time of this call, the |
| relevant EFI_CONFIGURATION_TABLE pointer to the RSDT is no |
| longer considered valid. |
| |
| |
| @param This A pointer to a EFI_ACPI_TABLE_PROTOCOL. |
| |
| @param AcpiTableBuffer A pointer to a buffer containing the |
| ACPI table to be installed. |
| |
| @param AcpiTableBufferSize Specifies the size, in bytes, of |
| the AcpiTableBuffer buffer. |
| |
| |
| @param TableKey Returns a key to refer to the ACPI table. |
| |
| @retval EFI_SUCCESS The table was successfully inserted |
| |
| @retval 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. |
| |
| @retval EFI_OUT_OF_RESOURCES Insufficient resources exist to |
| complete the request. |
| @retval EFI_ACCESS_DENIED The table signature matches a table already |
| present in the system and platform policy |
| does not allow duplicate tables of this type. |
| |
| **/ |
| 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 |
| ); |
| |
| /** |
| |
| The UninstallAcpiTable() function allows a caller to remove an |
| ACPI table. The routine will remove its reference from the |
| RSDT/XSDT. A table is referenced by the TableKey parameter |
| returned from a prior call to InstallAcpiTable(). If an EFI |
| application is running at the time of this call, the relevant |
| EFI_CONFIGURATION_TABLE pointer to the RSDT is no longer |
| considered valid. |
| |
| @param This A pointer to a EFI_ACPI_TABLE_PROTOCOL. |
| |
| @param TableKey Specifies the table to uninstall. The key was |
| returned from InstallAcpiTable(). |
| |
| @retval EFI_SUCCESS The table was successfully inserted |
| |
| @retval EFI_NOT_FOUND TableKey does not refer to a valid key |
| for a table entry. |
| |
| @retval 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 |
| ); |
| |
| /// |
| /// The EFI_ACPI_TABLE_PROTOCOL provides the ability for a component |
| /// to install and uninstall ACPI tables from a platform. |
| /// |
| struct _EFI_ACPI_TABLE_PROTOCOL { |
| EFI_ACPI_TABLE_INSTALL_ACPI_TABLE InstallAcpiTable; |
| EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable; |
| }; |
| |
| extern EFI_GUID gEfiAcpiTableProtocolGuid; |
| |
| #endif |