Get ESRT entry from ESRT Cache by FwClass Guid \r
\r
@param[in] FwClass FwClass of Esrt entry to get \r
- @param[in out] Entry Esrt entry returned \r
+ @param[in, out] Entry Esrt entry returned \r
\r
@retval EFI_SUCCESS The variable saving this Esrt Entry exists.\r
@retval EF_NOT_FOUND No correct variable found.\r
/**\r
This function syn up Cached ESRT with data from FMP instances\r
Function should be called after Connect All in order to locate all FMP protocols\r
- installed\r
+ installed.\r
\r
@retval EFI_SUCCESS Successfully sync cache repository from FMP instances\r
@retval EFI_NOT_FOUND No FMP Instance are found\r
EsrtTable->FwResourceCount = (UINT32)((NonFmpRepositorySize + FmpRepositorySize) / sizeof(EFI_SYSTEM_RESOURCE_ENTRY)); \r
EsrtTable->FwResourceCountMax = PcdGet32(PcdMaxNonFmpEsrtCacheNum) + PcdGet32(PcdMaxFmpEsrtCacheNum);\r
\r
- CopyMem(EsrtTable + 1, NonFmpEsrtRepository, NonFmpRepositorySize);\r
- CopyMem((UINT8 *)(EsrtTable + 1) + NonFmpRepositorySize, FmpEsrtRepository, FmpRepositorySize);\r
+ if (NonFmpRepositorySize != 0 && NonFmpEsrtRepository != NULL) {\r
+ CopyMem(EsrtTable + 1, NonFmpEsrtRepository, NonFmpRepositorySize);\r
+ }\r
+\r
+ if (FmpRepositorySize != 0 && FmpEsrtRepository != NULL) {\r
+ CopyMem((UINT8 *)(EsrtTable + 1) + NonFmpRepositorySize, FmpEsrtRepository, FmpRepositorySize);\r
+ }\r
\r
//\r
// Publish Esrt to system config table\r
}\r
}\r
\r
+/**\r
+ The module Entry Point of the Esrt DXE driver that manages cached ESRT repository \r
+ & publishes ESRT table\r
\r
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
+ @param[in] SystemTable A pointer to the EFI System Table.\r
+\r
+ @retval EFI_SUCCESS The entry point is executed successfully.\r
+ @retval Other Some error occurs when executing this entry point.\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
EsrtDxeEntryPoint (\r
#\r
\r
[Sources]\r
+ EsrtImpl.h\r
EsrtImpl.c\r
EsrtDxe.c\r
\r
PrintLib\r
\r
[Guids]\r
- gEfiSystemResourceTableGuid ## PRODUCES\r
- gEfiEventReadyToBootGuid ## CONSUMES\r
+ gEfiSystemResourceTableGuid ## PRODUCES ## SystemTable\r
+ gEfiEventReadyToBootGuid ## CONSUMES ## Event\r
\r
[Protocols]\r
gEfiFirmwareManagementProtocolGuid ## SOMETIMES_CONSUMES\r
goto EXIT;\r
}\r
\r
- if (RepositorySize != 0) {\r
+ if (RepositorySize != 0 && EsrtRepository != NULL) {\r
CopyMem(EsrtRepositoryNew, EsrtRepository, RepositorySize);\r
}\r
CopyMem((UINT8 *)EsrtRepositoryNew + RepositorySize, Entry, sizeof(EFI_SYSTEM_RESOURCE_ENTRY));\r
/**\r
Init one ESRT entry according to input FmpImageInfo (V1, V2, V3) .\r
\r
- @param[in] EsrtEntry Esrt entry to be Init\r
- @param[in] FmpImageInfo FMP image info descriptor\r
- @param[in] DescriptorVersion FMP Image info descriptor version\r
+ @param[in, out] EsrtEntry Esrt entry to be Init\r
+ @param[in] FmpImageInfo FMP image info descriptor\r
+ @param[in] DescriptorVersion FMP Image info descriptor version\r
\r
**/\r
VOID \r
/**\r
Init one ESRT entry according to input FmpImageInfo (V1, V2, V3) .\r
\r
- @param[in] EsrtEntry Esrt entry to be Init\r
- @param[in] FmpImageInfo FMP image info descriptor\r
- @param[in] DescriptorVersion FMP Image info descriptor version\r
+ @param[in, out] EsrtEntry Esrt entry to be Init\r
+ @param[in] FmpImageInfo FMP image info descriptor\r
+ @param[in] DescriptorVersion FMP Image info descriptor version\r
\r
**/\r
VOID \r
Get ESRT entry from ESRT Cache by FwClass Guid \r
\r
@param[in] FwClass FwClass of Esrt entry to get \r
- @param[in out] Entry Esrt entry returned \r
+ @param[in, out] Entry Esrt entry returned \r
\r
@retval EFI_SUCCESS The variable saving this Esrt Entry exists.\r
@retval EF_NOT_FOUND No correct variable found.\r
/**\r
This function syn up Cached ESRT with data from FMP instances\r
Function should be called after Connect All in order to locate all FMP protocols\r
- installed\r
+ installed.\r
\r
@retval EFI_SUCCESS Successfully sync cache repository from FMP instances\r
@retval EFI_NOT_FOUND No FMP Instance are found\r