mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 16:45:30 +00:00 
			
		
		
		
	 9344f09215
			
		
	
	
		9344f09215
		
	
	
	
	
		
			
			https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			125 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @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___
 | |
| 
 | |
| #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
 | |
| 
 |