From ab5f0d6d1271a293979af569a269792c491d0893 Mon Sep 17 00:00:00 2001 From: yshang1 Date: Fri, 11 Jan 2008 03:16:46 +0000 Subject: [PATCH] Change C functions, xxxSizeOfVariable(), to MACRO, which can avoid the ICC compile error "Unspecific evaluated order". git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4552 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/VariablePei/Variable.c | 65 ++---------------- .../Universal/VariablePei/Variable.h | 18 ++++- .../Universal/Variable/Pei/Variable.c | 65 ++---------------- .../Universal/Variable/Pei/Variable.h | 18 ++++- .../Universal/Variable/RuntimeDxe/Variable.c | 68 ++----------------- .../Universal/Variable/RuntimeDxe/Variable.h | 16 +++++ 6 files changed, 69 insertions(+), 181 deletions(-) diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c index e050fbcf9d..3751845fbf 100644 --- a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c +++ b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.c @@ -80,59 +80,6 @@ Returns: } - -UINT32 -NameSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->NameSize; -} - -UINT32 -DataSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->DataSize; -} - -UINT32 -AttributesOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->Attributes; -} - STATIC VARIABLE_HEADER * GetNextVariablePtr ( @@ -153,7 +100,7 @@ Returns: --*/ { - return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) GET_VARIABLE_DATA_PTR (Variable) + DataSizeOfVariable (Variable) + GET_PAD_SIZE (DataSizeOfVariable (Variable))); + return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) GET_VARIABLE_DATA_PTR (Variable) + DATASIZE_OF_VARIABLE (Variable) + GET_PAD_SIZE (DATASIZE_OF_VARIABLE (Variable))); } STATIC @@ -271,8 +218,8 @@ Returns: (((INT32 *) VendorGuid)[2] == ((INT32 *) &Variable->VendorGuid)[2]) && (((INT32 *) VendorGuid)[3] == ((INT32 *) &Variable->VendorGuid)[3]) ) { - ASSERT (NameSizeOfVariable (Variable) != 0); - if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable), NameSizeOfVariable (Variable))) { + ASSERT (NAMESIZE_OF_VARIABLE (Variable) != 0); + if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable), NAMESIZE_OF_VARIABLE (Variable))) { PtrTrack->CurrPtr = Variable; return EFI_SUCCESS; } @@ -479,7 +426,7 @@ Returns: // // Get data size // - VarDataSize = DataSizeOfVariable (Variable.CurrPtr); + VarDataSize = DATASIZE_OF_VARIABLE (Variable.CurrPtr); if (*DataSize >= VarDataSize) { (*PeiServices)->CopyMem (Data, GET_VARIABLE_DATA_PTR (Variable.CurrPtr), VarDataSize); @@ -605,9 +552,9 @@ Returns: while (!(Variable.CurrPtr >= Variable.EndPtr || Variable.CurrPtr == NULL)) { if (IsValidVariableHeader (Variable.CurrPtr)) { if (Variable.CurrPtr->State == VAR_ADDED) { - ASSERT (NameSizeOfVariable (Variable.CurrPtr) != 0); + ASSERT (NAMESIZE_OF_VARIABLE (Variable.CurrPtr) != 0); - VarNameSize = (UINTN) NameSizeOfVariable (Variable.CurrPtr); + VarNameSize = (UINTN) NAMESIZE_OF_VARIABLE (Variable.CurrPtr); if (VarNameSize <= *VariableNameSize) { (*PeiServices)->CopyMem (VariableName, GET_VARIABLE_NAME_PTR (Variable.CurrPtr), VarNameSize); diff --git a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h index aeb49bca80..2f586c6f4a 100644 --- a/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h +++ b/IntelFrameworkModulePkg/Universal/VariablePei/Variable.h @@ -44,10 +44,26 @@ Abstract: #define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1))) +#define NAMESIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->NameSize \ + ) + +#define DATASIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->DataSize \ + ) + #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER)) #define GET_VARIABLE_DATA_PTR(a) \ - (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NameSizeOfVariable(a) + GET_PAD_SIZE (NameSizeOfVariable(a) )) + (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NAMESIZE_OF_VARIABLE(a) + GET_PAD_SIZE (NAMESIZE_OF_VARIABLE(a))) typedef struct { VARIABLE_HEADER *CurrPtr; diff --git a/MdeModulePkg/Universal/Variable/Pei/Variable.c b/MdeModulePkg/Universal/Variable/Pei/Variable.c index ce79499746..d1165e1fe5 100644 --- a/MdeModulePkg/Universal/Variable/Pei/Variable.c +++ b/MdeModulePkg/Universal/Variable/Pei/Variable.c @@ -120,59 +120,6 @@ Returns: return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size); } -UINT32 -NameSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->NameSize; -} - -UINT32 -DataSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->DataSize; -} - -UINT32 -AttributesOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->Attributes; -} - - STATIC VARIABLE_HEADER * GetNextVariablePtr ( @@ -193,7 +140,7 @@ Returns: --*/ { - return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) GET_VARIABLE_DATA_PTR (Variable) + DataSizeOfVariable (Variable) + GET_PAD_SIZE (DataSizeOfVariable (Variable))); + return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) GET_VARIABLE_DATA_PTR (Variable) + DATASIZE_OF_VARIABLE (Variable) + GET_PAD_SIZE (DATASIZE_OF_VARIABLE (Variable))); } STATIC @@ -311,8 +258,8 @@ Returns: (((INT32 *) VendorGuid)[2] == ((INT32 *) &Variable->VendorGuid)[2]) && (((INT32 *) VendorGuid)[3] == ((INT32 *) &Variable->VendorGuid)[3]) ) { - ASSERT (NameSizeOfVariable (Variable) != 0); - if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable), NameSizeOfVariable (Variable))) { + ASSERT (NAMESIZE_OF_VARIABLE (Variable) != 0); + if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable), NAMESIZE_OF_VARIABLE (Variable))) { PtrTrack->CurrPtr = Variable; return EFI_SUCCESS; } @@ -521,7 +468,7 @@ Returns: // // Get data size // - VarDataSize = DataSizeOfVariable (Variable.CurrPtr); + VarDataSize = DATASIZE_OF_VARIABLE (Variable.CurrPtr); if (*DataSize >= VarDataSize) { (*PeiServices)->CopyMem (Data, GET_VARIABLE_DATA_PTR (Variable.CurrPtr), VarDataSize); @@ -597,9 +544,9 @@ Returns: while (!(Variable.CurrPtr >= Variable.EndPtr || Variable.CurrPtr == NULL)) { if (IsValidVariableHeader (Variable.CurrPtr)) { if (Variable.CurrPtr->State == VAR_ADDED) { - ASSERT (NameSizeOfVariable (Variable.CurrPtr) != 0); + ASSERT (NAMESIZE_OF_VARIABLE (Variable.CurrPtr) != 0); - VarNameSize = (UINTN) NameSizeOfVariable (Variable.CurrPtr); + VarNameSize = (UINTN) NAMESIZE_OF_VARIABLE (Variable.CurrPtr); if (VarNameSize <= *VariableNameSize) { (*PeiServices)->CopyMem (VariableName, GET_VARIABLE_NAME_PTR (Variable.CurrPtr), VarNameSize); diff --git a/MdeModulePkg/Universal/Variable/Pei/Variable.h b/MdeModulePkg/Universal/Variable/Pei/Variable.h index 751f8bf843..73e1b7afdb 100644 --- a/MdeModulePkg/Universal/Variable/Pei/Variable.h +++ b/MdeModulePkg/Universal/Variable/Pei/Variable.h @@ -43,10 +43,26 @@ Abstract: #define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1))) +#define NAMESIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->NameSize \ + ) + +#define DATASIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->DataSize \ + ) + #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER)) #define GET_VARIABLE_DATA_PTR(a) \ - (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NameSizeOfVariable(a) + GET_PAD_SIZE (NameSizeOfVariable(a))) + (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NAMESIZE_OF_VARIABLE(a) + GET_PAD_SIZE (NAMESIZE_OF_VARIABLE(a))) typedef struct { VARIABLE_HEADER *CurrPtr; diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c index e1fec9d62c..d7cb0cd71c 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c @@ -367,60 +367,6 @@ Returns: } } - -UINT32 -NameSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->NameSize; -} - -UINT32 -DataSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->DataSize; -} - -UINT32 -AttributesOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - - // - // Check whether the header is valid fully; - // Tricky: The unprogramed data in FLASH equals 0xff. - // - if (Variable->DataSize == (UINT32) -1 || - Variable->Attributes == (UINT32) -1 || - Variable->NameSize == (UINT32) -1) { - return 0; - } - return Variable->Attributes; -} - - UINT8 * GetVariableDataPtr ( IN VARIABLE_HEADER *Variable @@ -444,7 +390,7 @@ Returns: // // Be careful about pad size for alignment // - return (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (Variable) + NameSizeOfVariable (Variable) + GET_PAD_SIZE (NameSizeOfVariable (Variable))); + return (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (Variable) + NAMESIZE_OF_VARIABLE (Variable) + GET_PAD_SIZE (NAMESIZE_OF_VARIABLE (Variable))); } @@ -474,7 +420,7 @@ Returns: // // Be careful about pad size for alignment // - return (VARIABLE_HEADER *) HEADER_ALIGN (((UINTN) GetVariableDataPtr (Variable) + DataSizeOfVariable (Variable) + GET_PAD_SIZE (DataSizeOfVariable (Variable)))); + return (VARIABLE_HEADER *) HEADER_ALIGN (((UINTN) GetVariableDataPtr (Variable) + DATASIZE_OF_VARIABLE (Variable) + GET_PAD_SIZE (DATASIZE_OF_VARIABLE (Variable)))); } VARIABLE_HEADER * @@ -836,8 +782,8 @@ Returns: return EFI_SUCCESS; } else { if (CompareGuid (VendorGuid, &Variable[Index]->VendorGuid)) { - ASSERT (NameSizeOfVariable (Variable[Index]) != 0); - if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable[Index]), NameSizeOfVariable (Variable[Index]))) { + ASSERT (NAMESIZE_OF_VARIABLE (Variable[Index]) != 0); + if (!CompareMem (VariableName, GET_VARIABLE_NAME_PTR (Variable[Index]), NAMESIZE_OF_VARIABLE (Variable[Index]))) { PtrTrack->CurrPtr = Variable[Index]; PtrTrack->Volatile = (BOOLEAN)(Index == 0); return EFI_SUCCESS; @@ -920,7 +866,7 @@ RuntimeServiceGetVariable ( // // Get data size // - VarDataSize = DataSizeOfVariable (Variable.CurrPtr); + VarDataSize = DATASIZE_OF_VARIABLE (Variable.CurrPtr); ASSERT (VarDataSize != 0); if (*DataSize >= VarDataSize) { @@ -1027,7 +973,7 @@ RuntimeServiceGetNextVariableName ( // if (IsValidVariableHeader (Variable.CurrPtr) && Variable.CurrPtr->State == VAR_ADDED) { if (!(EfiAtRuntime () && !(Variable.CurrPtr->Attributes & EFI_VARIABLE_RUNTIME_ACCESS))) { - VarNameSize = NameSizeOfVariable (Variable.CurrPtr); + VarNameSize = NAMESIZE_OF_VARIABLE (Variable.CurrPtr); ASSERT (VarNameSize != 0); if (VarNameSize <= *VariableNameSize) { @@ -1228,7 +1174,7 @@ RuntimeServiceSetVariable ( // If the variable is marked valid and the same data has been passed in // then return to the caller immediately. // - if (DataSizeOfVariable (Variable.CurrPtr) == DataSize && + if (DATASIZE_OF_VARIABLE (Variable.CurrPtr) == DataSize && (CompareMem (Data, GetVariableDataPtr (Variable.CurrPtr), DataSize) == 0)) { UpdateVariableInfo (VariableName, VendorGuid, Volatile, FALSE, TRUE, FALSE, FALSE); diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h index b756fc6454..09a184d478 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h @@ -59,6 +59,22 @@ Abstract: #define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1))) +#define NAMESIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->NameSize \ + ) + +#define DATASIZE_OF_VARIABLE(Variable) \ + ((((Variable)->DataSize == (UINT32) -1) || \ + ((Variable)->Attributes == (UINT32) -1) || \ + ((Variable)->NameSize == (UINT32) -1)) ? \ + 0 : \ + (Variable)->DataSize \ + ) + #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER)) -- 2.39.2