/** @file This is an thunk implementation of the BootScript at run time. SmmScriptLib in Framework implementation is to save S3 Boot Script in SMM runtime. Here is the header file to define the API in this thunk library. Copyright (c) 2010, Intel Corporation. All rights reserved.
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 _SMM_SCRIPT_SAVE_H_ #define _SMM_SCRIPT_SAVE_H_ #include "Tiano.h" #include "EfiBootScript.h" #include "PiSmmDefinition.h" #include "PiSmmS3SaveState.h" typedef EFI_PHYSICAL_ADDRESS EFI_SMM_SCRIPT_TABLE; /** Intialize Boot Script table. This function should be called in SMM mode. The Thunk implementation is try to locate SmmSaveState protocol. @param SystemTable Pointer to the EFI sytem table @param SmmScriptTablePages The expected ScriptTable page number @param SmmScriptTableBase The returned ScriptTable base address @retval EFI_OUT_OF_RESOURCES No resource to do the initialization. @retval EFI_SUCCESS Function has completed successfully. **/ EFI_STATUS EFIAPI InitializeSmmScriptLib ( IN EFI_SYSTEM_TABLE *SystemTable, IN UINTN SmmScriptTablePages, OUT EFI_PHYSICAL_ADDRESS *SmmScriptTableBase ); /** Create Boot Script table. It will be ignore and just return EFI_SUCCESS since the boot script table is maintained by DxeBootScriptLib. Create Table is not needed. @param ScriptTable Pointer to the boot script table to create. @param Type The type of table to creat. @retval EFI_SUCCESS Function has completed successfully. **/ EFI_STATUS EFIAPI SmmBootScriptCreateTable ( IN OUT EFI_SMM_SCRIPT_TABLE *ScriptTable, IN UINTN Type ); /** 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 in SMM runtime. The parameter is the same with definitionin BootScriptSave Protocol. @param ScriptTable Pointer to the script table to write to. In the thunk implementation, this parameter is ignored since the boot script table is maintained by BootScriptLib. @param Type Not used. @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 SmmBootScriptWrite ( IN OUT EFI_SMM_SCRIPT_TABLE *ScriptTable, IN UINTN Type, IN UINT16 OpCode, ... ); /** Close Boot Script table. It will be ignore and just return EFI_SUCCESS since the boot script table is maintained by DxeBootScriptLib. @param ScriptTableBase Pointer to the boot script table to create. @param ScriptTablePtr Pointer to the script table to write to. @param Type The type of table to creat. @retval EFI_SUCCESS - Function has completed successfully. **/ EFI_STATUS EFIAPI SmmBootScriptCloseTable ( IN EFI_SMM_SCRIPT_TABLE ScriptTableBase, IN EFI_SMM_SCRIPT_TABLE ScriptTablePtr, IN UINTN Type ); #endif