X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FVariablePei%2FIpf%2FVariableWorker.c;fp=MdeModulePkg%2FUniversal%2FVariablePei%2FIpf%2FVariableWorker.c;h=912aab11824f77c88155aee5637894f3429c8366;hp=0000000000000000000000000000000000000000;hb=7ff7768df2a624b75c928aa5b3db8f847ed61429;hpb=de4c8a308017f1e55326887251a13a5b80162631 diff --git a/MdeModulePkg/Universal/VariablePei/Ipf/VariableWorker.c b/MdeModulePkg/Universal/VariablePei/Ipf/VariableWorker.c new file mode 100644 index 0000000000..912aab1182 --- /dev/null +++ b/MdeModulePkg/Universal/VariablePei/Ipf/VariableWorker.c @@ -0,0 +1,74 @@ +/** @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. + +**/ +// +// The package level header files this module uses +// +#include + +// +// The protocols, PPI and GUID defintions for this module +// +#include +// +// The Library classes this module consumes +// +#include +#include +#include +#include +#include + +#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; +} +