# UbaConfigDatabasePei

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **PeiDebugPrint** |  |
|  | **PeiDebugAssert** |  |
|  | **CfgDbLibGetNodeSignature** |  |
|  | **CfgDbLibInitNode** |  |
|  | **CfgDbLibAdjustOffsets** |  |
|  | **CfgDbLibFixupRelocation** |  |
|  | **CfgDbPeiGetDatabase** |  |
|  | **CfgDbLibGetRecord** |  |
|  | **CfgDbLibFindRecord** |  |
|  | **CfgDbLibAddRecord** |  |
|  | **CfgDbLibGetData** |  |
|  | **CfgDbLibBuildHob** |  |
|  | **CfgDbHobNotify** |  |
|  | **CfgDbNotifyCreateDb** |  |
|  | **CfgDbLibInitNodeAndRelocate** |  |
|  | **CfgDbNotifyGetInfo** |  |
|  | **CfgDbNotifyAddRecord** |  |
|  | **CfgDbNotifyFindKey** |  |
|  | **CfgDbPeimEntry** |  |
|  | **ModuleEntryPoint** |  |
| Config | **Database helper functions** |  |
| Node | **is a UBA_CFG_DB_RECORD; get count from container** |  |
| DbNode | **= (UBA_CFG_DB_NODE *)((UINT8 *)Record - OFFSET_OF (UBA_CFG_DB_RECORD, ListEntry));** |  |
| Check | **if DbName is actually a record; resolve to the container node** |  |
| Record | **= (UBA_CFG_DB_RECORD *)DbName;** |  |
| Update | **the database pointer in the original node** |  |
| CR | **(Container Record) macros** |  |
| Only | **adjust if the relocation hasn't been applied yet** |  |
| if | **(Record->Type != (UINT32)(UINTN)NodeBase) {** |  |
| Not | **found as standalone - resolved via PPI pointer** |  |
| Allocate | **copy pool for the data** |  |
| DataSize | **field still set but data=0 - proceed** |  |
| Copy | **the GUID key** |  |
| CopyMem | **(&NewRecord->Guid, Src, sizeof (GUID));** |  |
| Insert | **into linked list** |  |
| InsertTailList | **(&DbNode->RecordListHead, &NewRecord->ListEntry);** |  |
| Increment | **type counter** |  |
| Install | **notification PPI for the added record** |  |
| Validate | **signature** |  |
| if | **(Record->Signature != UBA_CFG_DB_SIGNATURE) {** |  |
| Calculate | **total HOB size:** |  |
| HobSize | **= sizeof (UBA_CFG_DB_HOB) + DbNode->RecordCount * sizeof (UBA_CFG_DB_HOB_RECORD);** |  |
| Create | **the HOB** |  |
| HobData | **= (UBA_CFG_DB_HOB *)BuildGuidHob (HobGuid, HobSize);** |  |
| Fill | **HOB header** |  |
| Fill | **record array and data payload** |  |
| HobRecord | **= (UBA_CFG_DB_HOB_RECORD *)((UINT8 *)HobData + sizeof (UBA_CFG_DB_HOB));** |  |
| Get | **the database node** |  |
| Record | **= (UBA_CFG_DB_RECORD *)((UBA_CFG_DB_PPI *)Ppi)->Database;** |  |
| Notify | **callbacks for the PPI protocol** |  |
| EFI_STATUS | **EFIAPI** |  |
| Module | **entry point** |  |
| Allocate | **the database node (0x3C = sizeof(UBA_CFG_DB_NODE))** |  |
| CfgDbPpi | **= (UBA_CFG_DB_PPI *)PeiServicesAllocateZeroPool (sizeof (UBA_CFG_DB_NODE));** |  |
| Initialize | **the PPI structure** |  |
| Signature | **at offset 0-3** |  |
| Version | **// Database pointer filled by CfgDbLibInitNodeAndRelocate** |  |
| Function | **table:** |  |
| PPI | **descriptor for installation** |  |
| NotifyDescriptor | **= (UINT32 *)PeiServicesAllocateZeroPool (sizeof (EFI_PEI_PPI_DESCRIPTOR));** |  |
| Not | **used** |  |
| Install | **the PPI** |  |
| PeiServices | **= GetPeiServices ();** |  |
| Install | **notification PPI for HOB serialization** |  |
| Status | **= ((EFI_PEI_SERVICES **)GetPeiServices ())->NotifyPpi (** |  |

---
*Generated by HR650X BIOS Decompilation Project*