mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 11:13:53 +01:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11189 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			116 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Header file for S3 Boot Script Saver thunk driver.
 | |
| 
 | |
|   Copyright (c) 2010, 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.
 | |
| 
 | |
| **/
 | |
| #ifndef __BOOT_SCRIPT_SAVE_ON_S3_SAVE_STATE_H__
 | |
| #define __BOOT_SCRIPT_SAVE_ON_S3_SAVE_STATE_H__
 | |
| #include <FrameworkDxe.h>
 | |
| 
 | |
| #include <Protocol/BootScriptSave.h>
 | |
| #include <Protocol/S3SaveState.h>
 | |
| 
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/UefiRuntimeServicesTableLib.h>
 | |
| #include <Library/SmbusLib.h>
 | |
| #include <Library/PeCoffLib.h>
 | |
| #include <Library/PcdLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/DxeServicesLib.h>
 | |
| #include <Library/CacheMaintenanceLib.h>
 | |
| 
 | |
| #include <Guid/BootScriptThunkData.h>
 | |
| 
 | |
| #include <IndustryStandard/SmBus.h>
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *DISPATCH_ENTRYPOINT_FUNC) (
 | |
|   IN EFI_HANDLE ImageHandle,
 | |
|   IN VOID       *Context
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Adds a record into a specified Framework boot script table.
 | |
| 
 | |
|   This function is used to store a boot script record into a given boot
 | |
|   script table. If the table specified by TableName is nonexistent in the 
 | |
|   system, a new table will automatically be created and then the script record 
 | |
|   will be added into the new table. A boot script table can add new script records
 | |
|   until EFI_BOOT_SCRIPT_SAVE_PROTOCOL.CloseTable() is called. Currently, the only 
 | |
|   meaningful table name is EFI_ACPI_S3_RESUME_SCRIPT_TABLE. This function is
 | |
|   responsible for allocating necessary memory for the script.
 | |
| 
 | |
|   This function has a variable parameter list. The exact parameter list depends on 
 | |
|   the OpCode that is passed into the function. If an unsupported OpCode or illegal 
 | |
|   parameter list is passed in, this function returns EFI_INVALID_PARAMETER.
 | |
|   If there are not enough resources available for storing more scripts, this function returns
 | |
|   EFI_OUT_OF_RESOURCES.
 | |
| 
 | |
|   @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
 | |
|   @param  TableName             Name of the script table. Currently, the only meaningful value is
 | |
|                                 EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
 | |
|   @param  OpCode                The operation code (opcode) number.
 | |
|   @param  ...                   Argument list that is specific to each opcode. 
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation succeeded. A record was added into the
 | |
|                                 specified script table.
 | |
|   @retval EFI_INVALID_PARAMETER The parameter is illegal or the given boot script is not supported.
 | |
|                                 If the opcode is unknow or not supported because of the PCD 
 | |
|                                 Feature Flags.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There is insufficient memory to store the boot script.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| BootScriptWrite (
 | |
|   IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
 | |
|   IN UINT16                           TableName,
 | |
|   IN UINT16                           OpCode,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Closes the specified script table.
 | |
| 
 | |
|   This function closes the specified boot script table and returns the base address 
 | |
|   of the table. It allocates a new pool to duplicate all the boot scripts in the specified 
 | |
|   table. Once this function is called, the specified table will be destroyed after it is 
 | |
|   copied into the allocated pool. As a result, any attempts to add a script record into a 
 | |
|   closed table will cause a new table to be created. The base address of the allocated pool 
 | |
|   will be returned in Address. After using the boot script table, the caller is responsible 
 | |
|   for freeing the pool that is allocated by this function. If the boot script table,
 | |
|   such as EFI_ACPI_S3_RESUME_SCRIPT_TABLE, is required to be stored in a nonperturbed
 | |
|   memory region, the caller should copy the table into the nonperturbed memory region by itself.
 | |
| 
 | |
|   @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
 | |
|   @param  TableName             Name of the script table. Currently, the only meaningful value is
 | |
|                                  EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
 | |
|   @param  Address               A pointer to the physical address where the table begins. 
 | |
|                                
 | |
|   @retval EFI_SUCCESS           The table was successfully returned.
 | |
|   @retval EFI_NOT_FOUND         The specified table was not created previously.
 | |
|   @retval EFI_OUT_OF_RESOURCE   Memory is insufficient to hold the reorganized boot script table.
 | |
|   @retval EFI_UNSUPPORTED       the table type is not EFI_ACPI_S3_RESUME_SCRIPT_TABLE
 | |
|   
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| BootScriptCloseTable (
 | |
|   IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
 | |
|   IN UINT16                           TableName,
 | |
|   OUT EFI_PHYSICAL_ADDRESS            *Address
 | |
|   );
 | |
| 
 | |
| #endif
 |