\r
////////////////////////////////////////////////////////////////////////////////\r
// //\r
-// Introduction of PEI PCD database //\r
+// Introduction of PCD database //\r
// //\r
////////////////////////////////////////////////////////////////////////////////\r
/**\r
To access a dynamicEx type PCD, pair of "token space guid/token number" all need\r
to be specificed for PcdSet/PcdGet accessing macro.\r
\r
+ Platform Token Number is started from 1, and inceased continuous. From whole \r
+ platform scope, there are two zones: PEI Zone and DXE Zone\r
+ | Platform Token Number\r
+ ----------|----------------------------------------------------------------\r
+ PEI Zone: | 1 ~ PEI_LOCAL_TOKEN_NUMBER\r
+ DXE Zone: | (PEI_LOCAL_TOKEN_NUMBER + 1) ~ (PEI_LOCAL_TOKEN_NUMBER + DXE_LOCAL_TOKEN_NUMBER)\r
+ \r
3.2.3 Local Token Number\r
To fast searching a PCD entry in PCD database, PCD driver translate \r
platform token number to local token number via a mapping table.\r
be seemed as "no default value".\r
\r
3.3.1 Simple Sample PCD Database C Structure\r
- A general sample of PCD database structue is as follows:\r
- typedef struct _PCD_DATABASE {\r
- typedef struct _PCD_DATABASE_INIT {\r
- //===== Following is PCD database internal maintain structures\r
- DYNAMICEX_MAPPING ExMapTable[PEI_EXMAPPING_TABLE_SIZE];\r
- UINT32 LocalTokenNumberTable[PEI_LOCAL_TOKEN_NUMBER_TABLE_SIZE];\r
- GUID GuidTable[PEI_GUID_TABLE_SIZE];\r
- SIZE_INFO SizeTable[PEI_SIZE_TABLE_SIZE];\r
- UINT8 SkuIdTable[PEI_SKUID_TABLE_SIZE];\r
- SKU_ID SystemSkuId;\r
- \r
- //===== Following is value structure for PCD with default value\r
- ....\r
- ....\r
- ....\r
- } Init;\r
- typedef struct _PCD_DATABSE_UNINIT {\r
- //==== Following is value structure for PCD without default value\r
- ....\r
- ....\r
- } UnInit;\r
- }\r
+ A general sample of PCD database structue is as follows:\r
+ typedef struct _PCD_DATABASE {\r
+ typedef struct _PCD_DATABASE_INIT {\r
+ //===== Following is PCD database internal maintain structures\r
+ DYNAMICEX_MAPPING ExMapTable[PEI_EXMAPPING_TABLE_SIZE];\r
+ UINT32 LocalTokenNumberTable[PEI_LOCAL_TOKEN_NUMBER_TABLE_SIZE];\r
+ GUID GuidTable[PEI_GUID_TABLE_SIZE];\r
+ SIZE_INFO SizeTable[PEI_SIZE_TABLE_SIZE];\r
+ UINT8 SkuIdTable[PEI_SKUID_TABLE_SIZE];\r
+ SKU_ID SystemSkuId;\r
+ \r
+ //===== Following is value structure for PCD with default value\r
+ ....\r
+ ....\r
+ ....\r
+ } Init;\r
+ typedef struct _PCD_DATABSE_UNINIT {\r
+ //==== Following is value structure for PCD without default value\r
+ ....\r
+ ....\r
+ } UnInit;\r
+ }\r
\r
3.3.2 PCD value structure in PCD database C structure\r
The value's structure is generated by build tool in PCD database C structure.\r
above ascii string table,\r
UINT8 StringTable[13];\r
The number of 13 in above sample is max size of byte array.\r
- \r
+ \r
+ 3.3.3 Some utility structures in PCD Database\r
+ 3.3.3.1 GuidTable\r
+ GuidTable array is used to store all related GUID value in PCD database:\r
+ - Variable GUID for HII type PCD\r
+ - Token space GUID for dynamicex type PCD \r
+ \r
**/\r