MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / GetPcdName

Function GetPcdName

MdeModulePkg/Universal/PCD/Pei/Service.c:83–141  ·  view source on GitHub ↗

Get PCD name. @param[in] OnlyTokenSpaceName If TRUE, only need to get the TokenSpaceCName. If FALSE, need to get the full PCD name. @param[in] Database PCD database. @param[in] TokenNumber The PCD token number. @return The TokenSpaceCName or full PCD name. **/

Source from the content-addressed store, hash-verified

81 @return The TokenSpaceCName or full PCD name.
82**/
83CHAR8 *
84GetPcdName (
85 IN BOOLEAN OnlyTokenSpaceName,
86 IN PEI_PCD_DATABASE *Database,
87 IN UINTN TokenNumber
88 )
89{
90 UINT8 *StringTable;
91 UINTN NameSize;
92 PCD_NAME_INDEX *PcdNameIndex;
93 CHAR8 *TokenSpaceName;
94 CHAR8 *PcdName;
95 CHAR8 *Name;
96
97 //
98 // Return NULL when PCD name table is absent.
99 //
100 if (Database->PcdNameTableOffset == 0) {
101 return NULL;
102 }
103
104 //
105 // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.
106 // We have to decrement TokenNumber by 1 to make it usable
107 // as the array index.
108 //
109 TokenNumber--;
110
111 StringTable = (UINT8 *) Database + Database->StringTableOffset;
112
113 //
114 // Get the PCD name index.
115 //
116 PcdNameIndex = (PCD_NAME_INDEX *)((UINT8 *) Database + Database->PcdNameTableOffset) + TokenNumber;
117 TokenSpaceName = (CHAR8 *)&StringTable[PcdNameIndex->TokenSpaceCNameIndex];
118 PcdName = (CHAR8 *)&StringTable[PcdNameIndex->PcdCNameIndex];
119
120 if (OnlyTokenSpaceName) {
121 //
122 // Only need to get the TokenSpaceCName.
123 //
124 Name = AllocateCopyPool(AsciiStrSize (TokenSpaceName), TokenSpaceName);
125 } else {
126 //
127 // Need to get the full PCD name.
128 //
129 NameSize = AsciiStrSize (TokenSpaceName) + AsciiStrSize (PcdName);
130 Name = AllocateZeroPool(NameSize);
131 ASSERT (Name != NULL);
132 //
133 // Catenate TokenSpaceCName and PcdCName with a '.' to form the full PCD name.
134 //
135 AsciiStrCatS (Name, NameSize, TokenSpaceName);
136 Name[AsciiStrSize (TokenSpaceName) - sizeof (CHAR8)] = '.';
137 AsciiStrCatS (Name, NameSize, PcdName);
138 }
139
140 return Name;

Callers 2

ExGetPcdInfoFunction · 0.70
PeiGetPcdInfoFunction · 0.70

Calls 4

AllocateCopyPoolFunction · 0.85
AsciiStrSizeFunction · 0.85
AsciiStrCatSFunction · 0.85
AllocateZeroPoolFunction · 0.50

Tested by

no test coverage detected