X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFrameworkModulePkg%2FUniversal%2FVariablePei%2FIpf%2FVariableWorker.c;fp=IntelFrameworkModulePkg%2FUniversal%2FVariablePei%2FIpf%2FVariableWorker.c;h=0a4ee9577472dc6c7d3219041510cdfb577d1481;hp=0000000000000000000000000000000000000000;hb=7ba905c909915ffaf66f116e5f894061c7f0ebe9;hpb=569f0fe6b8e4759414473eeb5900197232c27092 diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c b/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c new file mode 100644 index 0000000000..0a4ee95774 --- /dev/null +++ b/IntelFrameworkModulePkg/Universal/VariablePei/Ipf/VariableWorker.c @@ -0,0 +1,57 @@ +/** @file + Variable worker functions. + + Copyright (c) 2006, 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. + +**/ + +#include + + +/** + Get one variable by the index count. + + @param IndexTable The pointer to variable index table. + @param Count The index count of variable in index table. + + @return The pointer to variable header indexed by count. + +**/ +VARIABLE_HEADER * +GetVariableByIndex ( + IN VARIABLE_INDEX_TABLE *IndexTable, + IN UINT32 Count + ) +{ + return (VARIABLE_HEADER *) (UINTN) ((((UINT32)IndexTable->Index[Count]) << 2) + ((UINT32)(UINTN)IndexTable->StartPtr & 0xFFFC0000) ); +} + +/** + Record Variable in VariableIndex HOB. + + Record Variable in VariableIndex HOB and update the length of variable index table. + + @param IndexTable The pointer to variable index table. + @param Variable The pointer to the variable that will be recorded. + + @retval VOID + +**/ +VOID +VariableIndexTableUpdate ( + IN OUT VARIABLE_INDEX_TABLE *IndexTable, + IN VARIABLE_HEADER *Variable + ) +{ + IndexTable->Index[IndexTable->Length++] = (UINT16) (((UINT32)(UINTN) Variable) >> 2); + + return; +} +