summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library/GenericBdsLib/BdsMisc.c
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-03-06 11:48:52 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-03-06 11:48:52 +0000
commita1a99cca132359b0f08b66a73e54f6008f90a28e (patch)
treedc19cbf0546948af92d81b993e31e5726b1b9bb4 /MdeModulePkg/Library/GenericBdsLib/BdsMisc.c
parent189eac2199940cdc1265503ba4854ea947042424 (diff)
downloadedk2-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.c111
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 (