diff options
author | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-03-06 11:48:52 +0000 |
---|---|---|
committer | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-03-06 11:48:52 +0000 |
commit | a1a99cca132359b0f08b66a73e54f6008f90a28e (patch) | |
tree | dc19cbf0546948af92d81b993e31e5726b1b9bb4 /MdeModulePkg/Library/GenericBdsLib/BdsMisc.c | |
parent | 189eac2199940cdc1265503ba4854ea947042424 (diff) | |
download | edk2-platforms-a1a99cca132359b0f08b66a73e54f6008f90a28e.tar.xz |
1) Sync in patch for EDK 1063 Boot option enumeration algorithm enhancement
2) Sync in patch for EDK 1081: Enhance the BDS shell enumeration logic to skip the those not dispatched FVs in system.
3) Remove all EFI_SPECIFICATION_VERSION as all module should comply to UEFI 2.1 and later.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4798 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Library/GenericBdsLib/BdsMisc.c')
-rw-r--r-- | MdeModulePkg/Library/GenericBdsLib/BdsMisc.c | 111 |
1 files changed, 19 insertions, 92 deletions
diff --git a/MdeModulePkg/Library/GenericBdsLib/BdsMisc.c b/MdeModulePkg/Library/GenericBdsLib/BdsMisc.c index 739913bcaa..2c567fc3de 100644 --- a/MdeModulePkg/Library/GenericBdsLib/BdsMisc.c +++ b/MdeModulePkg/Library/GenericBdsLib/BdsMisc.c @@ -269,7 +269,7 @@ BdsLibRegisterNewOption ( EFI_DEVICE_PATH_PROTOCOL *OptionDevicePath; CHAR16 *Description; CHAR16 OptionName[10]; - BOOLEAN UpdateBootDevicePath; + BOOLEAN UpdateDescription; UINT16 BootOrderEntry; UINTN OrderItemNum; @@ -280,7 +280,7 @@ BdsLibRegisterNewOption ( OptionDevicePath = NULL; Description = NULL; OptionOrderPtr = NULL; - UpdateBootDevicePath = FALSE; + UpdateDescription = FALSE; ZeroMem (OptionName, sizeof (OptionName)); TempOptionSize = 0; @@ -318,8 +318,8 @@ BdsLibRegisterNewOption ( // // Notes: the description may will change base on the GetStringToken // - if (CompareMem (Description, String, StrSize (Description)) == 0) { - if (CompareMem (OptionDevicePath, DevicePath, GetDevicePathSize (OptionDevicePath)) == 0) { + if (CompareMem (OptionDevicePath, DevicePath, GetDevicePathSize (OptionDevicePath)) == 0) { + if (CompareMem (Description, String, StrSize (Description)) == 0) { // // Got the option, so just return // @@ -328,9 +328,10 @@ BdsLibRegisterNewOption ( return EFI_SUCCESS; } else { // - // Boot device path changed, need update. + // Option description changed, need update. // - UpdateBootDevicePath = TRUE; + UpdateDescription = TRUE; + gBS->FreePool (OptionPtr); break; } } @@ -350,7 +351,7 @@ BdsLibRegisterNewOption ( TempPtr += StrSize (String); CopyMem (TempPtr, DevicePath, GetDevicePathSize (DevicePath)); - if (UpdateBootDevicePath) { + if (UpdateDescription) { // // The number in option#### to be updated // @@ -375,7 +376,10 @@ BdsLibRegisterNewOption ( OptionSize, OptionPtr ); - if (EFI_ERROR (Status) || UpdateBootDevicePath) { + // + // Return if only need to update a changed description or fail to set option. + // + if (EFI_ERROR (Status) || UpdateDescription) { gBS->FreePool (OptionPtr); gBS->FreePool (TempOptionPtr); return Status; @@ -388,7 +392,7 @@ BdsLibRegisterNewOption ( // // - // If no BootOrder + // If no option order // if (TempOptionSize == 0) { BootOrderEntry = 0; @@ -406,18 +410,12 @@ BdsLibRegisterNewOption ( return EFI_SUCCESS; } - if (UpdateBootDevicePath) { - // - // If just update a old option, the new optionorder size not change - // - OrderItemNum = (TempOptionSize / sizeof (UINT16)) ; - OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16)); - CopyMem (OptionOrderPtr, TempOptionPtr, OrderItemNum * sizeof (UINT16)); - } else { - OrderItemNum = (TempOptionSize / sizeof (UINT16)) + 1 ; - OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16)); - CopyMem (OptionOrderPtr, TempOptionPtr, (OrderItemNum - 1) * sizeof (UINT16)); - } + // + // Append the new option number to the original option order + // + OrderItemNum = (TempOptionSize / sizeof (UINT16)) + 1 ; + OptionOrderPtr = AllocateZeroPool ( OrderItemNum * sizeof (UINT16)); + CopyMem (OptionOrderPtr, TempOptionPtr, (OrderItemNum - 1) * sizeof (UINT16)); OptionOrderPtr[Index] = RegisterOptionNumber; @@ -995,10 +993,6 @@ SetupResetReminder ( VOID ) { -#if (EFI_SPECIFICATION_VERSION < 0x0002000A) - EFI_STATUS Status; - EFI_FORM_BROWSER_PROTOCOL *Browser; -#endif EFI_INPUT_KEY Key; CHAR16 *StringBuffer1; CHAR16 *StringBuffer2; @@ -1010,14 +1004,6 @@ SetupResetReminder ( if (IsResetReminderFeatureEnable ()) { if (IsResetRequired ()) { -#if (EFI_SPECIFICATION_VERSION < 0x0002000A) - Status = gBS->LocateProtocol ( - &gEfiFormBrowserProtocolGuid, - NULL, - &Browser - ); -#endif - StringBuffer1 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16)); ASSERT (StringBuffer1 != NULL); StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16)); @@ -1028,11 +1014,7 @@ SetupResetReminder ( // Popup a menu to notice user // do { -#if (EFI_SPECIFICATION_VERSION < 0x0002000A) - Browser->CreatePopUp (2, TRUE, 0, NULL, &Key, StringBuffer1, StringBuffer2); -#else IfrLibCreatePopUp (2, &Key, StringBuffer1, StringBuffer2); -#endif } while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != CHAR_CARRIAGE_RETURN)); gBS->FreePool (StringBuffer1); @@ -1187,61 +1169,6 @@ BdsLibGetImageHeader ( return Status; } -#if (EFI_SPECIFICATION_VERSION < 0x0002000A) -EFI_STATUS -BdsLibGetHiiHandles ( - IN EFI_HII_PROTOCOL *Hii, - IN OUT UINT16 *HandleBufferLength, - OUT EFI_HII_HANDLE **HiiHandleBuffer - ) -/*++ - -Routine Description: - - Determines the handles that are currently active in the database. - It's the caller's responsibility to free handle buffer. - -Arguments: - - This - A pointer to the EFI_HII_PROTOCOL instance. - HandleBufferLength - On input, a pointer to the length of the handle buffer. On output, - the length of the handle buffer that is required for the handles found. - HiiHandleBuffer - Pointer to an array of EFI_HII_PROTOCOL instances returned. - -Returns: - - EFI_SUCCESS - Get an array of EFI_HII_PROTOCOL instances successfully. - EFI_INVALID_PARAMETER - Hii is NULL. - EFI_NOT_FOUND - Database not found. - ---*/ -{ - UINT16 TempBufferLength; - EFI_STATUS Status; - - TempBufferLength = 0; - - // - // Try to find the actual buffer size for HiiHandle Buffer. - // - Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer); - - if (Status == EFI_BUFFER_TOO_SMALL) { - *HiiHandleBuffer = AllocateZeroPool (TempBufferLength); - Status = Hii->FindHandles (Hii, &TempBufferLength, *HiiHandleBuffer); - // - // we should not fail here. - // - ASSERT_EFI_ERROR (Status); - } - - *HandleBufferLength = TempBufferLength; - - return Status; - -} -#endif - VOID EFIAPI BdsSetMemoryTypeInformationVariable ( |