mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/HiiDB: Reorganize codes of exporting HII settings
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1235 Function "HiiGetConfigurationSetting" may be called when HiiDatabase contents have been updated. And it is just to call function "HiiGetDatabaseInfo" to get the contents in HiiDatabase and call function "HiiGetConfigRespInfo" and get the configuration response string form HII drivers. So here we can remove function "HiiGetConfigurationSetting" and make caller to call "HiiGetDatabaseInfo" and "HiiGetConfigRespInfo" directly. And thus it also can distinguish which code blocks are to operate HiiDatabase contents and which code blocks are not. Then it's easy to know which code blocks should be atomic when updating HiiDatabase contents. Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
599bb2be1f
commit
adb2c05012
|
@ -21,7 +21,7 @@ EFI_HII_PACKAGE_LIST_HEADER *gRTDatabaseInfoBuffer = NULL;
|
||||||
EFI_STRING gRTConfigRespBuffer = NULL;
|
EFI_STRING gRTConfigRespBuffer = NULL;
|
||||||
UINTN gDatabaseInfoSize = 0;
|
UINTN gDatabaseInfoSize = 0;
|
||||||
UINTN gConfigRespSize = 0;
|
UINTN gConfigRespSize = 0;
|
||||||
BOOLEAN gExportConfigResp = TRUE;
|
BOOLEAN gExportConfigResp = FALSE;
|
||||||
UINTN gNvDefaultStoreSize = 0;
|
UINTN gNvDefaultStoreSize = 0;
|
||||||
SKU_ID gSkuId = 0xFFFFFFFFFFFFFFFF;
|
SKU_ID gSkuId = 0xFFFFFFFFFFFFFFFF;
|
||||||
LIST_ENTRY gVarStorageList = INITIALIZE_LIST_HEAD_VARIABLE (gVarStorageList);
|
LIST_ENTRY gVarStorageList = INITIALIZE_LIST_HEAD_VARIABLE (gVarStorageList);
|
||||||
|
@ -3435,39 +3435,6 @@ HiiGetDatabaseInfo(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
This function mainly use to get and update configuration settings information.
|
|
||||||
|
|
||||||
@param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Get the information successfully.
|
|
||||||
@retval EFI_OUT_OF_RESOURCES Not enough memory to store the Configuration Setting data.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
HiiGetConfigurationSetting(
|
|
||||||
IN CONST EFI_HII_DATABASE_PROTOCOL *This
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_STATUS Status;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Get the HiiDatabase info.
|
|
||||||
//
|
|
||||||
Status = HiiGetDatabaseInfo(This);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Get ConfigResp string
|
|
||||||
//
|
|
||||||
if (gExportConfigResp) {
|
|
||||||
Status = HiiGetConfigRespInfo (This);
|
|
||||||
gExportConfigResp = FALSE;
|
|
||||||
}
|
|
||||||
return Status;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function adds the packages in the package list to the database and returns a handle. If there is a
|
This function adds the packages in the package list to the database and returns a handle. If there is a
|
||||||
EFI_DEVICE_PATH_PROTOCOL associated with the DriverHandle, then this function will
|
EFI_DEVICE_PATH_PROTOCOL associated with the DriverHandle, then this function will
|
||||||
|
@ -3561,11 +3528,19 @@ HiiNewPackageList (
|
||||||
*Handle = DatabaseRecord->Handle;
|
*Handle = DatabaseRecord->Handle;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check whether need to get the Database and configuration setting info.
|
// Check whether need to get the Database info.
|
||||||
// Only after ReadyToBoot, need to do the export.
|
// Only after ReadyToBoot, need to do the export.
|
||||||
//
|
//
|
||||||
if (gExportAfterReadyToBoot) {
|
if (gExportAfterReadyToBoot) {
|
||||||
HiiGetConfigurationSetting(This);
|
HiiGetDatabaseInfo (This);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check whether need to get the configuration setting info from HII drivers.
|
||||||
|
// When after ReadyToBoot and need to do the export for form package add.
|
||||||
|
//
|
||||||
|
if (gExportAfterReadyToBoot && gExportConfigResp) {
|
||||||
|
HiiGetConfigRespInfo (This);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
@ -3674,11 +3649,19 @@ HiiRemovePackageList (
|
||||||
FreePool (Node);
|
FreePool (Node);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check whether need to get the Database and configuration setting info.
|
// Check whether need to get the Database info.
|
||||||
// Only after ReadyToBoot, need to do the export.
|
// Only after ReadyToBoot, need to do the export.
|
||||||
//
|
//
|
||||||
if (gExportAfterReadyToBoot) {
|
if (gExportAfterReadyToBoot) {
|
||||||
HiiGetConfigurationSetting(This);
|
HiiGetDatabaseInfo (This);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check whether need to get the configuration setting info from HII drivers.
|
||||||
|
// When after ReadyToBoot and need to do the export for form package remove.
|
||||||
|
//
|
||||||
|
if (gExportAfterReadyToBoot && gExportConfigResp) {
|
||||||
|
HiiGetConfigRespInfo (This);
|
||||||
}
|
}
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -3790,13 +3773,19 @@ HiiUpdatePackageList (
|
||||||
Status = AddPackages (Private, EFI_HII_DATABASE_NOTIFY_ADD_PACK, PackageList, Node);
|
Status = AddPackages (Private, EFI_HII_DATABASE_NOTIFY_ADD_PACK, PackageList, Node);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check whether need to get the Database and configuration setting info.
|
// Check whether need to get the Database info.
|
||||||
// Only after ReadyToBoot, need to do the export.
|
// Only after ReadyToBoot, need to do the export.
|
||||||
//
|
//
|
||||||
if (gExportAfterReadyToBoot) {
|
if (gExportAfterReadyToBoot && Status == EFI_SUCCESS) {
|
||||||
if (Status == EFI_SUCCESS){
|
HiiGetDatabaseInfo (This);
|
||||||
HiiGetConfigurationSetting(This);
|
}
|
||||||
}
|
|
||||||
|
//
|
||||||
|
// Check whether need to get the configuration setting info from HII drivers.
|
||||||
|
// When after ReadyToBoot and need to do the export for form package update.
|
||||||
|
//
|
||||||
|
if (gExportAfterReadyToBoot && gExportConfigResp && Status == EFI_SUCCESS) {
|
||||||
|
HiiGetConfigRespInfo (This);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
|
@ -2329,12 +2329,12 @@ This function mainly use to get HiiDatabase information.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
HiiGetDatabaseInfo(
|
HiiGetDatabaseInfo (
|
||||||
IN CONST EFI_HII_DATABASE_PROTOCOL *This
|
IN CONST EFI_HII_DATABASE_PROTOCOL *This
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This is an internal function,mainly use to get and update configuration settings information.
|
This function mainly use to get and update ConfigResp string.
|
||||||
|
|
||||||
@param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.
|
@param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.
|
||||||
|
|
||||||
|
@ -2343,7 +2343,7 @@ This is an internal function,mainly use to get and update configuration settings
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
HiiGetConfigurationSetting(
|
HiiGetConfigRespInfo (
|
||||||
IN CONST EFI_HII_DATABASE_PROTOCOL *This
|
IN CONST EFI_HII_DATABASE_PROTOCOL *This
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,8 @@ OnReadyToBoot (
|
||||||
// When ready to boot, we begin to export the HiiDatabase date.
|
// When ready to boot, we begin to export the HiiDatabase date.
|
||||||
// And hook all the possible HiiDatabase change actions to export data.
|
// And hook all the possible HiiDatabase change actions to export data.
|
||||||
//
|
//
|
||||||
HiiGetConfigurationSetting(&mPrivate.HiiDatabase);
|
HiiGetDatabaseInfo (&mPrivate.HiiDatabase);
|
||||||
|
HiiGetConfigRespInfo (&mPrivate.HiiDatabase);
|
||||||
gExportAfterReadyToBoot = TRUE;
|
gExportAfterReadyToBoot = TRUE;
|
||||||
|
|
||||||
gBS->CloseEvent (Event);
|
gBS->CloseEvent (Event);
|
||||||
|
|
Loading…
Reference in New Issue