| /** @file | |
| Header file for S3 Boot Script Saver thunk driver. | |
| Copyright (c) 2010 - 2014, 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 <Library/BaseMemoryLib.h> | |
| #include <Library/DevicePathLib.h> | |
| #include <Library/UefiLib.h> | |
| #include <Guid/BootScriptThunkData.h> | |
| #include <Guid/MemoryProfile.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 |