Support RouteConfig function for BdsDxe driver.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Gao, Liming <liming,gao@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15563 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Eric Dong
2014-06-18 02:19:50 +00:00
committed by ydong10
parent 885f7fd0c7
commit be9304f33f
11 changed files with 1567 additions and 511 deletions

View File

@@ -752,16 +752,16 @@ Var_UpdateBootOption (
Index = BOpt_GetBootOptionNumber () ;
UnicodeSPrint (BootString, sizeof (BootString), L"Boot%04x", Index);
if (NvRamMap->DescriptionData[0] == 0x0000) {
StrCpy (NvRamMap->DescriptionData, BootString);
if (NvRamMap->BootDescriptionData[0] == 0x0000) {
StrCpy (NvRamMap->BootDescriptionData, BootString);
}
BufferSize = sizeof (UINT32) + sizeof (UINT16) + StrSize (NvRamMap->DescriptionData);
BufferSize = sizeof (UINT32) + sizeof (UINT16) + StrSize (NvRamMap->BootDescriptionData);
BufferSize += GetDevicePathSize (CallbackData->LoadContext->FilePathList);
if (NvRamMap->OptionalData[0] != 0x0000) {
if (NvRamMap->BootOptionalData[0] != 0x0000) {
OptionalDataExist = TRUE;
BufferSize += StrSize (NvRamMap->OptionalData);
BufferSize += StrSize (NvRamMap->BootOptionalData);
}
Buffer = AllocateZeroPool (BufferSize);
@@ -791,21 +791,21 @@ Var_UpdateBootOption (
CopyMem (
Ptr,
NvRamMap->DescriptionData,
StrSize (NvRamMap->DescriptionData)
NvRamMap->BootDescriptionData,
StrSize (NvRamMap->BootDescriptionData)
);
NewLoadContext->Description = AllocateZeroPool (StrSize (NvRamMap->DescriptionData));
NewLoadContext->Description = AllocateZeroPool (StrSize (NvRamMap->BootDescriptionData));
ASSERT (NewLoadContext->Description != NULL);
NewMenuEntry->DisplayString = NewLoadContext->Description;
CopyMem (
NewLoadContext->Description,
(VOID *) Ptr,
StrSize (NvRamMap->DescriptionData)
StrSize (NvRamMap->BootDescriptionData)
);
Ptr += StrSize (NvRamMap->DescriptionData);
Ptr += StrSize (NvRamMap->BootDescriptionData);
CopyMem (
Ptr,
CallbackData->LoadContext->FilePathList,
@@ -838,7 +838,7 @@ Var_UpdateBootOption (
if (OptionalDataExist) {
Ptr += (UINT8) GetDevicePathSize (CallbackData->LoadContext->FilePathList);
CopyMem (Ptr, NvRamMap->OptionalData, StrSize (NvRamMap->OptionalData));
CopyMem (Ptr, NvRamMap->BootOptionalData, StrSize (NvRamMap->BootOptionalData));
}
Status = gRT->SetVariable (
@@ -879,8 +879,8 @@ Var_UpdateBootOption (
InsertTailList (&BootOptionMenu.Head, &NewMenuEntry->Link);
BootOptionMenu.MenuNumber++;
NvRamMap->DescriptionData[0] = 0x0000;
NvRamMap->OptionalData[0] = 0x0000;
NvRamMap->BootDescriptionData[0] = 0x0000;
NvRamMap->BootOptionalData[0] = 0x0000;
}
}
return EFI_SUCCESS;
@@ -983,11 +983,11 @@ Var_UpdateBootOrder (
return EFI_OUT_OF_RESOURCES;
}
ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionOrder) / sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])));
ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.BootOptionOrder) / sizeof (CallbackData->BmmFakeNvData.BootOptionOrder[0])));
for (OrderIndex = 0; (OrderIndex < BootOptionMenu.MenuNumber) && (CallbackData->BmmFakeNvData.OptionOrder[OrderIndex] != 0); OrderIndex++) {
for (OrderIndex = 0; (OrderIndex < BootOptionMenu.MenuNumber) && (CallbackData->BmmFakeNvData.BootOptionOrder[OrderIndex] != 0); OrderIndex++) {
for (Index = OrderIndex; Index < BootOrderListSize / sizeof (UINT16); Index++) {
if ((BootOrderList[Index] == (UINT16) (CallbackData->BmmFakeNvData.OptionOrder[OrderIndex] - 1)) && (OrderIndex != Index)) {
if ((BootOrderList[Index] == (UINT16) (CallbackData->BmmFakeNvData.BootOptionOrder[OrderIndex] - 1)) && (OrderIndex != Index)) {
OptionNumber = BootOrderList[Index];
CopyMem (&BootOrderList[OrderIndex + 1], &BootOrderList[OrderIndex], (Index - OrderIndex) * sizeof (UINT16));
BootOrderList[OrderIndex] = OptionNumber;
@@ -1065,9 +1065,9 @@ Var_UpdateDriverOrder (
FreePool (DriverOrderList);
}
ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionOrder) / sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])));
ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder) / sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder[0])));
for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {
NewDriverOrderList[Index] = (UINT16) (CallbackData->BmmFakeNvData.OptionOrder[Index] - 1);
NewDriverOrderList[Index] = (UINT16) (CallbackData->BmmFakeNvData.DriverOptionOrder[Index] - 1);
}
Status = gRT->SetVariable (
@@ -1100,7 +1100,8 @@ Var_UpdateDriverOrder (
**/
EFI_STATUS
Var_UpdateBBSOption (
IN BMM_CALLBACK_DATA *CallbackData
IN BMM_CALLBACK_DATA *CallbackData,
IN EFI_FORM_ID FormId
)
{
UINTN Index;
@@ -1129,7 +1130,7 @@ Var_UpdateBBSOption (
DisMap = NULL;
NewOrder = NULL;
switch (CallbackData->BmmPreviousPageId) {
switch (FormId) {
case FORM_SET_FD_ORDER_ID:
OptionMenu = (BM_MENU_OPTION *) &LegacyFDMenu;
LegacyDev = CallbackData->BmmFakeNvData.LegacyFD;