X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkCompatibilityPkg%2FSample%2FTools%2FSource%2FUefiVfrCompile%2FVfrUtilityLib.h;fp=EdkCompatibilityPkg%2FSample%2FTools%2FSource%2FUefiVfrCompile%2FVfrUtilityLib.h;h=0000000000000000000000000000000000000000;hp=fe37f83e160ed9e3036da674b6c0071b0a150435;hb=c455bc8c8d78ad51c24426a500914ea32504bf06;hpb=5bca07268acabe7f31407358e875ccf89cb5e386 diff --git a/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrUtilityLib.h b/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrUtilityLib.h deleted file mode 100644 index fe37f83e16..0000000000 --- a/EdkCompatibilityPkg/Sample/Tools/Source/UefiVfrCompile/VfrUtilityLib.h +++ /dev/null @@ -1,406 +0,0 @@ -/*++ -Copyright (c) 2004 - 2010, 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. - -Module Name: - VfrUtilityLib.h - -Abstract: - ---*/ - -#ifndef _VFRUTILITYLIB_H_ -#define _VFRUTILITYLIB_H_ - -#include "Tiano.h" -#include "string.h" -#include "EfiTypes.h" -#include "EfiVfr.h" -#include "VfrError.h" - -#define MAX_NAME_LEN 64 -#define DEFAULT_ALIGN 1 -#define DEFAULT_PACK_ALIGN 0x8 -#define DEFAULT_NAME_TABLE_ITEMS 1024 - -#define EFI_BITS_SHIFT_PER_UINT32 0x5 -#define EFI_BITS_PER_UINT32 (1 << EFI_BITS_SHIFT_PER_UINT32) - -#define BUFFER_SAFE_FREE(Buf) do { if ((Buf) != NULL) { delete (Buf); } } while (0); - -class CVfrBinaryOutput { -public: - virtual VOID WriteLine (IN FILE *, IN UINT32, IN INT8 *, IN INT8 *, IN UINT32); - virtual VOID WriteEnd (IN FILE *, IN UINT32, IN INT8 *, IN INT8 *, IN UINT32); -}; - -UINT32 -_STR2U32 ( - IN INT8 *Str - ); - -struct SConfigInfo { - UINT16 mOffset; - UINT16 mWidth; - UINT8 *mValue; - SConfigInfo *mNext; - - SConfigInfo (IN UINT8, IN UINT16, IN UINT32, IN EFI_IFR_TYPE_VALUE); - ~SConfigInfo (VOID); -}; - -struct SConfigItem { - INT8 *mName; // varstore name - INT8 *mId; // varstore ID - SConfigInfo *mInfoStrList; // list of Offset/Value in the varstore - SConfigItem *mNext; - -public: - SConfigItem (IN INT8 *, IN INT8 *); - SConfigItem (IN INT8 *, IN INT8 *, IN UINT8, IN UINT16, IN UINT16, IN EFI_IFR_TYPE_VALUE); - virtual ~SConfigItem (); -}; - -class CVfrBufferConfig { -private: - SConfigItem *mItemListHead; - SConfigItem *mItemListTail; - SConfigItem *mItemListPos; - -public: - CVfrBufferConfig (VOID); - virtual ~CVfrBufferConfig (VOID); - - virtual UINT8 Register (IN INT8 *, IN INT8 *Info = NULL); - virtual VOID Open (VOID); - virtual BOOLEAN Eof(VOID); - virtual UINT8 Select (IN INT8 *, IN INT8 *Info = NULL); - virtual UINT8 Write (IN CONST CHAR8, IN INT8 *, IN INT8 *, IN UINT8, IN UINT16, IN UINT32, IN EFI_IFR_TYPE_VALUE); -#if 0 - virtual UINT8 Read (OUT INT8 **, OUT INT8 **, OUT INT8 **, OUT INT8 **, OUT INT8 **); -#endif - virtual VOID Close (VOID); - virtual VOID OutputCFile (IN FILE *, IN INT8 *); -}; - -extern CVfrBufferConfig gCVfrBufferConfig; - -#define ALIGN_STUFF(Size, Align) ((Align) - (Size) % (Align)) -#define INVALID_ARRAY_INDEX 0xFFFFFFFF - -struct SVfrDataType; - -struct SVfrDataField { - INT8 mFieldName[MAX_NAME_LEN]; - SVfrDataType *mFieldType; - UINT32 mOffset; - UINT32 mArrayNum; - SVfrDataField *mNext; -}; - -struct SVfrDataType { - INT8 mTypeName[MAX_NAME_LEN]; - UINT8 mType; - UINT32 mAlign; - UINT32 mTotalSize; - SVfrDataField *mMembers; - SVfrDataType *mNext; -}; - -#define VFR_PACK_ASSIGN 0x01 -#define VFR_PACK_SHOW 0x02 -#define VFR_PACK_PUSH 0x04 -#define VFR_PACK_POP 0x08 - -#define PACKSTACK_MAX_SIZE 0x400 - -struct SVfrPackStackNode { - INT8 *mIdentifier; - UINT32 mNumber; - SVfrPackStackNode *mNext; - - SVfrPackStackNode (IN INT8 *Identifier, IN UINT32 Number) { - mIdentifier = NULL; - mNumber = Number; - mNext = NULL; - - if (Identifier != NULL) { - mIdentifier = new INT8[strlen (Identifier) + 1]; - strcpy (mIdentifier, Identifier); - } - } - - ~SVfrPackStackNode (VOID) { - if (mIdentifier != NULL) { - delete mIdentifier; - } - mNext = NULL; - } - - bool Match (IN INT8 *Identifier) { - if (Identifier == NULL) { - return TRUE; - } else if (mIdentifier == NULL) { - return FALSE; - } else if (strcmp (Identifier, mIdentifier) == 0) { - return TRUE; - } else { - return FALSE; - } - } -}; - -class CVfrVarDataTypeDB { -private: - UINT32 mPackAlign; - SVfrPackStackNode *mPackStack; - -public: - EFI_VFR_RETURN_CODE Pack (IN UINT32, IN UINT8, IN INT8 *Identifier = NULL, IN UINT32 Number = DEFAULT_PACK_ALIGN); - -private: - SVfrDataType *mDataTypeList; - - SVfrDataType *mNewDataType; - SVfrDataType *mCurrDataType; - SVfrDataField *mCurrDataField; - - VOID InternalTypesListInit (VOID); - VOID RegisterNewType (IN SVfrDataType *); - - EFI_VFR_RETURN_CODE ExtractStructTypeName (IN INT8 *&, OUT INT8 *); - EFI_VFR_RETURN_CODE ExtractFieldNameAndArrary (IN INT8 *&, OUT INT8 *, OUT UINT32 &); - EFI_VFR_RETURN_CODE GetTypeField (IN INT8 *, IN SVfrDataType *, IN SVfrDataField *&); - EFI_VFR_RETURN_CODE GetFieldOffset (IN SVfrDataField *, IN UINT32, OUT UINT32 &); - UINT8 GetFieldWidth (IN SVfrDataField *); - UINT32 GetFieldSize (IN SVfrDataField *, IN UINT32); - -public: - CVfrVarDataTypeDB (VOID); - ~CVfrVarDataTypeDB (VOID); - - VOID DeclareDataTypeBegin (VOID); - EFI_VFR_RETURN_CODE SetNewTypeName (IN INT8 *); - EFI_VFR_RETURN_CODE DataTypeAddField (IN INT8 *, IN INT8 *, IN UINT32); - VOID DeclareDataTypeEnd (VOID); - - EFI_VFR_RETURN_CODE GetDataType (IN INT8 *, OUT SVfrDataType **); - EFI_VFR_RETURN_CODE GetDataTypeSize (IN INT8 *, OUT UINT32 *); - EFI_VFR_RETURN_CODE GetDataTypeSize (IN UINT8, OUT UINT32 *); - EFI_VFR_RETURN_CODE GetDataFieldInfo (IN INT8 *, OUT UINT16 &, OUT UINT8 &, OUT UINT32 &); - - EFI_VFR_RETURN_CODE GetUserDefinedTypeNameList (OUT INT8 ***, OUT UINT32 *); - BOOLEAN IsTypeNameDefined (IN INT8 *); - -#ifdef CVFR_VARDATATYPEDB_DEBUG - VOID ParserDB (); -#endif -}; - -typedef enum { - EFI_VFR_VARSTORE_INVALID, - EFI_VFR_VARSTORE_BUFFER, - EFI_VFR_VARSTORE_EFI, - EFI_VFR_VARSTORE_NAME -} EFI_VFR_VARSTORE_TYPE; - -struct SVfrVarStorageNode { - EFI_GUID mGuid; - INT8 *mVarStoreName; - EFI_VARSTORE_ID mVarStoreId; - struct SVfrVarStorageNode *mNext; - - EFI_VFR_VARSTORE_TYPE mVarStoreType; - union { - // EFI Variable - struct { - EFI_STRING_ID mEfiVarName; - UINT32 mEfiVarSize; - } mEfiVar; - - // Buffer Storage - SVfrDataType *mDataType; - - // NameValue Storage - struct { - EFI_STRING_ID *mNameTable; - UINT32 mTableSize; - } mNameSpace; - } mStorageInfo; - -public: - SVfrVarStorageNode (IN EFI_GUID *, IN INT8 *, IN EFI_VARSTORE_ID, IN EFI_STRING_ID, IN UINT32); - SVfrVarStorageNode (IN EFI_GUID *, IN INT8 *, IN EFI_VARSTORE_ID, IN SVfrDataType *); - SVfrVarStorageNode (IN INT8 *, IN EFI_VARSTORE_ID); - ~SVfrVarStorageNode (VOID); -}; - -struct EFI_VARSTORE_INFO { - EFI_VARSTORE_ID mVarStoreId; - union { - EFI_STRING_ID mVarName; - UINT16 mVarOffset; - } mInfo; - UINT8 mVarType; - UINT32 mVarTotalSize; - - EFI_VARSTORE_INFO (VOID); - EFI_VARSTORE_INFO (IN EFI_VARSTORE_INFO &); - BOOLEAN operator == (IN EFI_VARSTORE_INFO *); -}; - -#define EFI_VARSTORE_ID_MAX 0xFFFF -#define EFI_FREE_VARSTORE_ID_BITMAP_SIZE ((EFI_VARSTORE_ID_MAX + 1) / EFI_BITS_PER_UINT32) - -class CVfrDataStorage { -private: - UINT32 mFreeVarStoreIdBitMap[EFI_FREE_VARSTORE_ID_BITMAP_SIZE]; - - struct SVfrVarStorageNode *mBufferVarStoreList; - struct SVfrVarStorageNode *mEfiVarStoreList; - struct SVfrVarStorageNode *mNameVarStoreList; - - struct SVfrVarStorageNode *mCurrVarStorageNode; - struct SVfrVarStorageNode *mNewVarStorageNode; - -private: - - EFI_VARSTORE_ID GetFreeVarStoreId (VOID); - BOOLEAN ChekVarStoreIdFree (IN EFI_VARSTORE_ID); - VOID MarkVarStoreIdUsed (IN EFI_VARSTORE_ID); - VOID MarkVarStoreIdUnused (IN EFI_VARSTORE_ID); - -public: - CVfrDataStorage (); - ~CVfrDataStorage (); - - EFI_VFR_RETURN_CODE DeclareNameVarStoreBegin (INT8 *); - EFI_VFR_RETURN_CODE NameTableAddItem (EFI_STRING_ID); - EFI_VFR_RETURN_CODE DeclareNameVarStoreEnd (EFI_GUID *); - - EFI_VFR_RETURN_CODE DeclareEfiVarStore (IN INT8 *, IN EFI_GUID *, IN EFI_STRING_ID, IN UINT32); - - EFI_VFR_RETURN_CODE DeclareBufferVarStore (IN INT8 *, IN EFI_GUID *, IN CVfrVarDataTypeDB *, IN INT8 *, IN EFI_VARSTORE_ID); - - EFI_VFR_RETURN_CODE GetVarStoreId (IN INT8 *, OUT EFI_VARSTORE_ID *); - EFI_VFR_RETURN_CODE GetVarStoreType (IN INT8 *, OUT EFI_VFR_VARSTORE_TYPE &); - EFI_VFR_VARSTORE_TYPE GetVarStoreType (IN EFI_VARSTORE_ID); - EFI_VFR_RETURN_CODE GetVarStoreName (IN EFI_VARSTORE_ID, OUT INT8 **); - - EFI_VFR_RETURN_CODE GetBufferVarStoreDataTypeName (IN INT8 *, OUT INT8 **); - EFI_VFR_RETURN_CODE GetEfiVarStoreInfo (IN EFI_VARSTORE_INFO *); - EFI_VFR_RETURN_CODE GetNameVarStoreInfo (IN EFI_VARSTORE_INFO *, IN UINT32); - - EFI_VFR_RETURN_CODE BufferVarStoreRequestElementAdd (IN INT8 *, IN EFI_VARSTORE_INFO &); -}; - -#define EFI_QUESTION_ID_MAX 0xFFFF -#define EFI_FREE_QUESTION_ID_BITMAP_SIZE ((EFI_QUESTION_ID_MAX + 1) / EFI_BITS_PER_UINT32) -#define EFI_QUESTION_ID_INVALID 0x0 - -#define DATE_YEAR_BITMASK 0x0000FFFF -#define DATE_MONTH_BITMASK 0x00FF0000 -#define DATE_DAY_BITMASK 0xFF000000 -#define TIME_HOUR_BITMASK 0x000000FF -#define TIME_MINUTE_BITMASK 0x0000FF00 -#define TIME_SECOND_BITMASK 0x00FF0000 - -struct SVfrQuestionNode { - INT8 *mName; - INT8 *mVarIdStr; - EFI_QUESTION_ID mQuestionId; - UINT32 mBitMask; - SVfrQuestionNode *mNext; - - SVfrQuestionNode (IN INT8 *, IN INT8 *, IN UINT32 BitMask = 0); - ~SVfrQuestionNode (); -}; - -class CVfrQuestionDB { -private: - SVfrQuestionNode *mQuestionList; - UINT32 mFreeQIdBitMap[EFI_FREE_QUESTION_ID_BITMAP_SIZE]; - -private: - EFI_QUESTION_ID GetFreeQuestionId (VOID); - BOOLEAN ChekQuestionIdFree (IN EFI_QUESTION_ID); - VOID MarkQuestionIdUsed (IN EFI_QUESTION_ID); - VOID MarkQuestionIdUnused (IN EFI_QUESTION_ID); - -public: - CVfrQuestionDB (); - ~CVfrQuestionDB(); - - EFI_VFR_RETURN_CODE RegisterQuestion (IN INT8 *, IN INT8 *, IN OUT EFI_QUESTION_ID &); - VOID RegisterOldDateQuestion (IN INT8 *, IN INT8 *, IN INT8 *, IN OUT EFI_QUESTION_ID &); - VOID RegisterNewDateQuestion (IN INT8 *, IN INT8 *, IN OUT EFI_QUESTION_ID &); - VOID RegisterOldTimeQuestion (IN INT8 *, IN INT8 *, IN INT8 *, IN OUT EFI_QUESTION_ID &); - VOID RegisterNewTimeQuestion (IN INT8 *, IN INT8 *, IN OUT EFI_QUESTION_ID &); - EFI_VFR_RETURN_CODE UpdateQuestionId (IN EFI_QUESTION_ID, IN EFI_QUESTION_ID); - VOID GetQuestionId (IN INT8 *, IN INT8 *, OUT EFI_QUESTION_ID &, OUT UINT32 &); - EFI_VFR_RETURN_CODE FindQuestion (IN EFI_QUESTION_ID); - EFI_VFR_RETURN_CODE FindQuestion (IN INT8 *); - }; - -struct SVfrDefaultStoreNode { - EFI_IFR_DEFAULTSTORE *mObjBinAddr; - INT8 *mRefName; - EFI_STRING_ID mDefaultStoreNameId; - UINT16 mDefaultId; - - SVfrDefaultStoreNode *mNext; - - SVfrDefaultStoreNode (IN EFI_IFR_DEFAULTSTORE *, IN INT8 *, IN EFI_STRING_ID, IN UINT16); - ~SVfrDefaultStoreNode(); -}; - -class CVfrDefaultStore { -private: - SVfrDefaultStoreNode *mDefaultStoreList; - -public: - CVfrDefaultStore (); - ~CVfrDefaultStore (); - - EFI_VFR_RETURN_CODE RegisterDefaultStore (IN CHAR8 *, IN INT8 *, IN EFI_STRING_ID, IN UINT16); - EFI_VFR_RETURN_CODE ReRegisterDefaultStoreById (IN UINT16, IN INT8 *, IN EFI_STRING_ID); - BOOLEAN DefaultIdRegistered (IN UINT16); - EFI_VFR_RETURN_CODE GetDefaultId (IN INT8 *, OUT UINT16 *); - EFI_VFR_RETURN_CODE BufferVarStoreAltConfigAdd (IN EFI_VARSTORE_ID, IN EFI_VARSTORE_INFO &, IN INT8 *, IN UINT8, IN EFI_IFR_TYPE_VALUE); -}; - -#define EFI_RULE_ID_START 0x01 -#define EFI_RULE_ID_INVALID 0x00 - -struct SVfrRuleNode { - UINT8 mRuleId; - INT8 *mRuleName; - SVfrRuleNode *mNext; - - SVfrRuleNode(IN INT8 *, IN UINT8); - ~SVfrRuleNode(); -}; - -class CVfrRulesDB { -private: - SVfrRuleNode *mRuleList; - UINT8 mFreeRuleId; - -public: - CVfrRulesDB (); - ~CVfrRulesDB(); - - VOID RegisterRule (IN INT8 *); - UINT8 GetRuleId (IN INT8 *); -}; - -#define MIN(v1, v2) (((v1) < (v2)) ? (v1) : (v2)) -#define MAX(v1, v2) (((v1) > (v2)) ? (v1) : (v2)) - -#endif