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: Laszlo Ersek <lersek@redhat.com>
		
			
				
	
	
		
			224 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Serialize & Deserialize UEFI Variables
 | 
						|
 | 
						|
  Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __SERIALIZE_VARIABLES_LIB__
 | 
						|
#define __SERIALIZE_VARIABLES_LIB__
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Callback function for each variable
 | 
						|
 | 
						|
  @param[in] Context - Context as sent to the iteration function
 | 
						|
  @param[in] VariableName - Refer to RuntimeServices GetNextVariableName
 | 
						|
  @param[in] VendorGuid - Refer to RuntimeServices GetNextVariableName
 | 
						|
  @param[in] Attributes - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] DataSize - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] Data - Refer to RuntimeServices GetVariable
 | 
						|
 | 
						|
  @retval RETURN_SUCCESS         Continue iterating through the variables
 | 
						|
  @return Any RETURN_ERROR       Stop iterating through the variables
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
RETURN_STATUS
 | 
						|
(EFIAPI *VARIABLE_SERIALIZATION_ITERATION_CALLBACK)(
 | 
						|
  IN  VOID                         *Context,
 | 
						|
  IN  CHAR16                       *VariableName,
 | 
						|
  IN  EFI_GUID                     *VendorGuid,
 | 
						|
  IN  UINT32                       Attributes,
 | 
						|
  IN  UINTN                        DataSize,
 | 
						|
  IN  VOID                         *Data
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Creates a new variable serialization instance
 | 
						|
 | 
						|
  @param[out]  Handle - Handle for a variable serialization instance
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - The variable serialization instance was
 | 
						|
                 successfully created.
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 create the variable serialization instance.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesNewInstance (
 | 
						|
  OUT EFI_HANDLE                      *Handle
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Free memory associated with a variable serialization instance
 | 
						|
 | 
						|
  @param[in]  Handle - Handle for a variable serialization instance
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - The variable serialization instance was
 | 
						|
                 successfully freed.
 | 
						|
  @retval      RETURN_INVALID_PARAMETER - Handle was not a valid
 | 
						|
                 variable serialization instance.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesFreeInstance (
 | 
						|
  IN EFI_HANDLE Handle
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Creates a new variable serialization instance using the given
 | 
						|
  binary representation of the variables to fill the new instance
 | 
						|
 | 
						|
  @param[out] Handle - Handle for a variable serialization instance
 | 
						|
  @param[in]  Buffer - A buffer with the serialized representation
 | 
						|
                of the variables.  Must be the same format as produced
 | 
						|
                by SerializeVariablesToBuffer.
 | 
						|
  @param[in]  Size - This is the size of the binary representation
 | 
						|
                of the variables.
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - The binary representation was successfully
 | 
						|
                 imported into a new variable serialization instance
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 create the new variable serialization instance
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesNewInstanceFromBuffer (
 | 
						|
  OUT EFI_HANDLE                          *Handle,
 | 
						|
  IN  VOID                                *Buffer,
 | 
						|
  IN  UINTN                               Size
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Iterates all variables found with RuntimeServices GetNextVariableName
 | 
						|
 | 
						|
  @param[in]   CallbackFunction - Function called for each variable instance
 | 
						|
  @param[in]   Context - Passed to each call of CallbackFunction
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - All variables were iterated without the
 | 
						|
                 CallbackFunction returning an error
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 iterate through the variables
 | 
						|
  @return      Any of RETURN_ERROR indicates an error reading the variable
 | 
						|
                 or an error was returned from CallbackFunction
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesIterateSystemVariables (
 | 
						|
  IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction,
 | 
						|
  IN VOID                                      *Context
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Iterates all variables found in the variable serialization instance
 | 
						|
 | 
						|
  @param[in]   Handle - Handle for a variable serialization instance
 | 
						|
  @param[in]   CallbackFunction - Function called for each variable instance
 | 
						|
  @param[in]   Context - Passed to each call of CallbackFunction
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - All variables were iterated without the
 | 
						|
                 CallbackFunction returning an error
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 iterate through the variables
 | 
						|
  @return      Any of RETURN_ERROR indicates an error reading the variable
 | 
						|
                 or an error was returned from CallbackFunction
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesIterateInstanceVariables (
 | 
						|
  IN EFI_HANDLE                                Handle,
 | 
						|
  IN VARIABLE_SERIALIZATION_ITERATION_CALLBACK CallbackFunction,
 | 
						|
  IN VOID                                      *Context
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Sets all variables found in the variable serialization instance
 | 
						|
 | 
						|
  @param[in]   Handle - Handle for a variable serialization instance
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - All variables were set successfully
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 set all the variables
 | 
						|
  @return      Any of RETURN_ERROR indicates an error reading the variables
 | 
						|
                 or in attempting to set a variable
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesSetSerializedVariables (
 | 
						|
  IN EFI_HANDLE                       Handle
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Adds a variable to the variable serialization instance
 | 
						|
 | 
						|
  @param[in] Handle - Handle for a variable serialization instance
 | 
						|
  @param[in] VariableName - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] VendorGuid - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] Attributes - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] DataSize - Refer to RuntimeServices GetVariable
 | 
						|
  @param[in] Data - Refer to RuntimeServices GetVariable
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - All variables were set successfully
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 add the variable
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesAddVariable (
 | 
						|
  IN EFI_HANDLE                   Handle,
 | 
						|
  IN CHAR16                       *VariableName,
 | 
						|
  IN EFI_GUID                     *VendorGuid,
 | 
						|
  IN UINT32                       Attributes,
 | 
						|
  IN UINTN                        DataSize,
 | 
						|
  IN VOID                         *Data
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Serializes the variables known to this instance into the
 | 
						|
  provided buffer.
 | 
						|
 | 
						|
  @param[in]     Handle - Handle for a variable serialization instance
 | 
						|
  @param[out]    Buffer - A buffer to store the binary representation
 | 
						|
                   of the variables.
 | 
						|
  @param[in,out] Size - On input this is the size of the buffer.
 | 
						|
                   On output this is the size of the binary representation
 | 
						|
                   of the variables.
 | 
						|
 | 
						|
  @retval      RETURN_SUCCESS - The binary representation was successfully
 | 
						|
                 completed and returned in the buffer.
 | 
						|
  @retval      RETURN_OUT_OF_RESOURCES - There we not enough resources to
 | 
						|
                 save the variables to the buffer.
 | 
						|
  @retval      RETURN_INVALID_PARAMETER - Handle was not a valid
 | 
						|
                 variable serialization instance or
 | 
						|
                 Size or Buffer were NULL.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerializeVariablesToBuffer (
 | 
						|
  IN     EFI_HANDLE                       Handle,
 | 
						|
  OUT    VOID                             *Buffer,
 | 
						|
  IN OUT UINTN                            *Size
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
#endif
 | 
						|
 |