REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			170 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   S3 Save State Protocol as defined in PI 1.6(Errata A) Specification VOLUME 5 Standard.
 | |
| 
 | |
|   This protocol is used by DXE PI module to store or record various IO operations
 | |
|   to be replayed during an S3 resume.
 | |
|   This protocol is not required for all platforms.
 | |
| 
 | |
|   Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   This PPI is defined in UEFI Platform Initialization Specification 1.2 Volume 5:
 | |
|   Standards
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __S3_SAVE_STATE_H__
 | |
| #define __S3_SAVE_STATE_H__
 | |
| 
 | |
| #define EFI_S3_SAVE_STATE_PROTOCOL_GUID \
 | |
|     { 0xe857caf6, 0xc046, 0x45dc, { 0xbe, 0x3f, 0xee, 0x7, 0x65, 0xfb, 0xa8, 0x87 }}
 | |
| 
 | |
| typedef VOID *EFI_S3_BOOT_SCRIPT_POSITION;
 | |
| 
 | |
| typedef struct _EFI_S3_SAVE_STATE_PROTOCOL EFI_S3_SAVE_STATE_PROTOCOL;
 | |
| 
 | |
| /**
 | |
|   Record operations that need to be replayed during an S3 resume.
 | |
| 
 | |
|   This function is used to store an OpCode to be replayed as part of the S3 resume boot path. It is
 | |
|   assumed this protocol has platform specific mechanism to store the OpCode set and replay them
 | |
|   during the S3 resume.
 | |
| 
 | |
|   @param[in]    This    A pointer to the EFI_S3_SAVE_STATE_PROTOCOL instance.
 | |
|   @param[in]    OpCode  The operation code (opcode) number.
 | |
|   @param[in]    ...     Argument list that is specific to each opcode. See the following subsections for the
 | |
|                         definition of 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.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There is insufficient memory to store the boot script.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_S3_SAVE_STATE_WRITE)(
 | |
|   IN CONST EFI_S3_SAVE_STATE_PROTOCOL  *This,
 | |
|   IN       UINTN                       OpCode,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Record operations that need to be replayed during an S3 resume.
 | |
| 
 | |
|   This function is used to store an OpCode to be replayed as part of the S3 resume boot path. It is
 | |
|   assumed this protocol has platform specific mechanism to store the OpCode set and replay them
 | |
|   during the S3 resume.
 | |
|   The opcode is inserted before or after the specified position in the boot script table. If Position is
 | |
|   NULL then that position is after the last opcode in the table (BeforeOrAfter is TRUE) or before
 | |
|   the first opcode in the table (BeforeOrAfter is FALSE). The position which is pointed to by
 | |
|   Position upon return can be used for subsequent insertions.
 | |
| 
 | |
|   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.
 | |
|   OpCode values of 0x80 - 0xFE are reserved for implementation specific functions.
 | |
| 
 | |
|   @param[in]        This            A pointer to the EFI_S3_SAVE_STATE_PROTOCOL instance.
 | |
|   @param[in]        BeforeOrAfter   Specifies whether the opcode is stored before (TRUE) or after (FALSE) the position
 | |
|                                     in the boot script table specified by Position. If Position is NULL or points to
 | |
|                                     NULL then the new opcode is inserted at the beginning of the table (if TRUE) or end
 | |
|                                     of the table (if FALSE).
 | |
|   @param[in, out]   Position        On entry, specifies the position in the boot script table where the opcode will be
 | |
|                                     inserted, either before or after, depending on BeforeOrAfter. On exit, specifies
 | |
|                                     the position of the inserted opcode in the boot script table.
 | |
|   @param[in]        OpCode          The operation code (opcode) number. See "Related Definitions" in Write() for the
 | |
|                                     defined opcode types.
 | |
|   @param[in]        ...             Argument list that is specific to each opcode. See the following subsections for the
 | |
|                                     definition of each opcode.
 | |
| 
 | |
|   @retval EFI_SUCCESS               The operation succeeded. An opcode was added into the script.
 | |
|   @retval EFI_INVALID_PARAMETER     The Opcode is an invalid opcode value.
 | |
|   @retval EFI_INVALID_PARAMETER     The Position is not a valid position in the boot script table.
 | |
|   @retval EFI_OUT_OF_RESOURCES      There is insufficient memory to store the boot script table.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_S3_SAVE_STATE_INSERT)(
 | |
|   IN CONST EFI_S3_SAVE_STATE_PROTOCOL  *This,
 | |
|   IN       BOOLEAN                     BeforeOrAfter,
 | |
|   IN OUT   EFI_S3_BOOT_SCRIPT_POSITION *Position       OPTIONAL,
 | |
|   IN       UINTN                       OpCode,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find a label within the boot script table and, if not present, optionally create it.
 | |
| 
 | |
|   If the label Label is already exists in the boot script table, then no new label is created, the
 | |
|   position of the Label is returned in *Position and EFI_SUCCESS is returned.
 | |
|   If the label Label does not already exist and CreateIfNotFound is TRUE, then it will be
 | |
|   created before or after the specified position and EFI_SUCCESS is returned.
 | |
|   If the label Label does not already exist and CreateIfNotFound is FALSE, then
 | |
|   EFI_NOT_FOUND is returned.
 | |
| 
 | |
|   @param[in]      This                A pointer to the EFI_S3_SAVE_STATE_PROTOCOL instance.
 | |
|   @param[in]      BeforeOrAfter       Specifies whether the label is stored before (TRUE) or after (FALSE) the position in
 | |
|                                       the boot script table specified by Position. If Position is NULL or points to
 | |
|                                       NULL then the new label is inserted at the beginning of the table (if TRUE) or end of
 | |
|                                       the table (if FALSE).
 | |
|   @param[in]      CreateIfNotFound    Specifies whether the label will be created if the label does not exists (TRUE) or not (FALSE).
 | |
|   @param[in, out] Position            On entry, specifies the position in the boot script table where the label will be inserted,
 | |
|                                       either before or after, depending on BeforeOrAfter. On exit, specifies the position
 | |
|                                       of the inserted label in the boot script table.
 | |
|   @param[in]      Label               Points to the label which will be inserted in the boot script table.
 | |
| 
 | |
|   @retval    EFI_SUCCESS              The label already exists or was inserted.
 | |
|   @retval    EFI_NOT_FOUND            The label did not already exist and CreateifNotFound was FALSE.
 | |
|   @retval    EFI_INVALID_PARAMETER    The Label is NULL or points to an empty string.
 | |
|   @retval    EFI_INVALID_PARAMETER    The Position is not a valid position in the boot script table.
 | |
|   @retval    EFI_OUT_OF_RESOURCES     There is insufficient memory to store the boot script.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_S3_SAVE_STATE_LABEL)(
 | |
|   IN CONST  EFI_S3_SAVE_STATE_PROTOCOL      *This,
 | |
|   IN        BOOLEAN                         BeforeOrAfter,
 | |
|   IN        BOOLEAN                         CreateIfNotFound,
 | |
|   IN OUT    EFI_S3_BOOT_SCRIPT_POSITION     *Position OPTIONAL,
 | |
|   IN CONST  CHAR8                           *Label
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Compare two positions in the boot script table and return their relative position.
 | |
| 
 | |
|   This function compares two positions in the boot script table and returns their relative positions. If
 | |
|   Position1 is before Position2, then -1 is returned. If Position1 is equal to Position2,
 | |
|   then 0 is returned. If Position1 is after Position2, then 1 is returned.
 | |
| 
 | |
|   @param[in]    This                A pointer to the EFI_S3_SAVE_STATE_PROTOCOL instance.
 | |
|   @param[in]    Position1           The positions in the boot script table to compare.
 | |
|   @param[in]    Position2           The positions in the boot script table to compare.
 | |
|   @param[out]   RelativePosition    On return, points to the result of the comparison.
 | |
| 
 | |
|   @retval   EFI_SUCCESS             The operation succeeded.
 | |
|   @retval   EFI_INVALID_PARAMETER   The Position1 or Position2 is not a valid position in the boot script table.
 | |
|   @retval   EFI_INVALID_PARAMETER   The RelativePosition is NULL.
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_S3_SAVE_STATE_COMPARE)(
 | |
|   IN CONST EFI_S3_SAVE_STATE_PROTOCOL          *This,
 | |
|   IN       EFI_S3_BOOT_SCRIPT_POSITION         Position1,
 | |
|   IN       EFI_S3_BOOT_SCRIPT_POSITION         Position2,
 | |
|   OUT      UINTN                               *RelativePosition
 | |
|   );
 | |
| 
 | |
| struct _EFI_S3_SAVE_STATE_PROTOCOL {
 | |
|   EFI_S3_SAVE_STATE_WRITE      Write;
 | |
|   EFI_S3_SAVE_STATE_INSERT     Insert;
 | |
|   EFI_S3_SAVE_STATE_LABEL      Label;
 | |
|   EFI_S3_SAVE_STATE_COMPARE    Compare;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiS3SaveStateProtocolGuid;
 | |
| 
 | |
| #endif // __S3_SAVE_STATE_H__
 |