diff options
author | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-07-10 09:00:40 +0000 |
---|---|---|
committer | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-07-10 09:00:40 +0000 |
commit | dce655e8bfaba7fac56ef5159453c7cd6eac6729 (patch) | |
tree | f7dfca365197b2f199932b20eb6229ffe6e4cc9f /MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c | |
parent | 2ab6330e7e3ec18b615bad61e35d077e88ec0849 (diff) | |
download | edk2-platforms-dce655e8bfaba7fac56ef5159453c7cd6eac6729.tar.xz |
Clean up BootMaint module in BdsDxe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5444 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c')
-rw-r--r-- | MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c | 363 |
1 files changed, 159 insertions, 204 deletions
diff --git a/MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c b/MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c index 89c8612d46..8baff7bb4c 100644 --- a/MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c +++ b/MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c @@ -20,15 +20,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "BBSsupport.h"
/**
- EDES_TODO: Add function description.
+ Create a menu entry give a Menu type.
- @param MenuType Use this parameter to identify current
- Menu type
+ @param MenuType The Menu type to be created.
- EDES_TODO: Incomplete Descriptions NULL Cannot allocate memory for current menu
- EDES_TODO: Incomplete Descriptions entry
- EDES_TODO: Incomplete Descriptions Others A valid pointer pointing to the allocated
- EDES_TODO: Incomplete Descriptions memory pool for current menu entry
+
+ @retval NULL If failed to create the menu.
+ @return The menu.
**/
BM_MENU_ENTRY *
@@ -74,12 +72,12 @@ BOpt_CreateMenuEntry ( return NULL;
}
- MenuEntry = EfiAllocateZeroPool (sizeof (BM_MENU_ENTRY));
+ MenuEntry = AllocateZeroPool (sizeof (BM_MENU_ENTRY));
if (NULL == MenuEntry) {
return MenuEntry;
}
- MenuEntry->VariableContext = EfiAllocateZeroPool (ContextSize);
+ MenuEntry->VariableContext = AllocateZeroPool (ContextSize);
if (NULL == MenuEntry->VariableContext) {
SafeFreePool (MenuEntry);
MenuEntry = NULL;
@@ -92,11 +90,11 @@ BOpt_CreateMenuEntry ( }
/**
- EDES_TODO: Add function description.
+ Free up all resource allocated for a BM_MENU_ENTRY.
- @param MenuEntry EDES_TODO: Add parameter description
+ @param MenuEntry A pointer to BM_MENU_ENTRY.
- @return EDES_TODO: Add description for return value
+ @retval VOID
**/
VOID
@@ -173,12 +171,15 @@ BOpt_DestroyMenuEntry ( }
/**
- EDES_TODO: Add function description.
+ Get the Menu Entry from the list in Menu Entry List.
+
+ If MenuNumber is great or equal to the number of Menu
+ Entry in the list, then ASSERT.
- @param MenuOption EDES_TODO: Add parameter description
- @param MenuNumber EDES_TODO: Add parameter description
+ @param MenuOption The Menu Entry List to read the menu entry.
+ @param MenuNumber The index of Menu Entry.
- @return EDES_TODO: Add description for return value
+ @return The Menu Entry.
**/
BM_MENU_ENTRY *
@@ -191,9 +192,7 @@ BOpt_GetMenuEntry ( UINTN Index;
LIST_ENTRY *List;
- if (MenuNumber >= MenuOption->MenuNumber) {
- return NULL;
- }
+ ASSERT (MenuNumber < MenuOption->MenuNumber);
List = MenuOption->Head.ForwardLink;
for (Index = 0; Index < MenuNumber; Index++) {
@@ -206,7 +205,10 @@ BOpt_GetMenuEntry ( }
/**
- EDES_TODO: Add function description.
+ This function build the FsOptionMenu list which records all
+ available file system in the system. They includes all instances
+ of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, all instances of EFI_LOAD_FILE_SYSTEM
+ and all type of legacy boot device.
@param CallbackData BMM context data
@@ -273,7 +275,7 @@ BOpt_FindFileSystem ( // Issue a dummy read to trigger reinstall of BlockIo protocol for removable media
//
if (BlkIo->Media->RemovableMedia) {
- Buffer = EfiAllocateZeroPool (BlkIo->Media->BlockSize);
+ Buffer = AllocateZeroPool (BlkIo->Media->BlockSize);
if (NULL == Buffer) {
SafeFreePool (BlkIoHandle);
return EFI_OUT_OF_RESOURCES;
@@ -372,7 +374,7 @@ BOpt_FindFileSystem ( }
TempStr = MenuEntry->HelpString;
- MenuEntry->DisplayString = EfiAllocateZeroPool (MAX_CHAR);
+ MenuEntry->DisplayString = AllocateZeroPool (MAX_CHAR);
ASSERT (MenuEntry->DisplayString != NULL);
UnicodeSPrint (
MenuEntry->DisplayString,
@@ -419,7 +421,7 @@ BOpt_FindFileSystem ( MenuEntry->HelpString = DevicePathToStr (FileContext->DevicePath);
TempStr = MenuEntry->HelpString;
- MenuEntry->DisplayString = EfiAllocateZeroPool (MAX_CHAR);
+ MenuEntry->DisplayString = AllocateZeroPool (MAX_CHAR);
ASSERT (MenuEntry->DisplayString != NULL);
UnicodeSPrint (
MenuEntry->DisplayString,
@@ -478,7 +480,7 @@ BOpt_FindFileSystem ( MenuEntry->HelpString = DevicePathToStr (FileContext->DevicePath);
TempStr = MenuEntry->HelpString;
- MenuEntry->DisplayString = EfiAllocateZeroPool (MAX_CHAR);
+ MenuEntry->DisplayString = AllocateZeroPool (MAX_CHAR);
ASSERT (MenuEntry->DisplayString != NULL);
UnicodeSPrint (
MenuEntry->DisplayString,
@@ -498,22 +500,18 @@ BOpt_FindFileSystem ( return EFI_SUCCESS;
}
-VOID
-BOpt_FreeMenu (
- BM_MENU_OPTION *FreeMenu
- )
-/*++
-
-Routine Description
+/**
Free resources allocated in Allocate Rountine
-Arguments:
- FreeMenu Menu to be freed
+ @param FreeMenu Menu to be freed
-Returns:
- VOID
+ @return VOID
---*/
+**/
+VOID
+BOpt_FreeMenu (
+ BM_MENU_OPTION *FreeMenu
+ )
{
BM_MENU_ENTRY *MenuEntry;
while (!IsListEmpty (&FreeMenu->Head)) {
@@ -528,26 +526,22 @@ Returns: }
}
-EFI_STATUS
-BOpt_FindFiles (
- IN BMM_CALLBACK_DATA *CallbackData,
- IN BM_MENU_ENTRY *MenuEntry
- )
-/*++
-
-Routine Description
+/**
Find files under current directory
All files and sub-directories in current directory
will be stored in DirectoryMenu for future use.
-Arguments:
- FileOption -- Pointer for Dir to explore
+ @param FileOption Pointer for Dir to explore.
-Returns:
- TRUE -- Get files from current dir successfully
- FALSE -- Can't get files from current dir
+ @retval TRUE Get files from current dir successfully.
+ @retval FALSE Can't get files from current dir.
---*/
+**/
+EFI_STATUS
+BOpt_FindFiles (
+ IN BMM_CALLBACK_DATA *CallbackData,
+ IN BM_MENU_ENTRY *MenuEntry
+ )
{
EFI_FILE_HANDLE NewDir;
EFI_FILE_HANDLE Dir;
@@ -597,7 +591,7 @@ Returns: );
DirBufferSize = sizeof (EFI_FILE_INFO) + 1024;
- DirInfo = EfiAllocateZeroPool (DirBufferSize);
+ DirInfo = AllocateZeroPool (DirBufferSize);
if (DirInfo == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -659,7 +653,7 @@ Returns: if (NewFileContext->IsDir) {
BufferSize = StrLen (DirInfo->FileName) * 2 + 6;
- NewMenuEntry->DisplayString = EfiAllocateZeroPool (BufferSize);
+ NewMenuEntry->DisplayString = AllocateZeroPool (BufferSize);
UnicodeSPrint (
NewMenuEntry->DisplayString,
@@ -687,22 +681,19 @@ Returns: return EFI_SUCCESS;
}
-EFI_STATUS
-BOpt_GetLegacyOptions (
- VOID
- )
-/*++
-Routine Description:
-
+/**
Build the LegacyFDMenu LegacyHDMenu LegacyCDMenu according to LegacyBios.GetBbsInfo().
-Arguments:
- None
+ @param VOID
-Returns:
- The device info of legacy device.
+ @retval EFI_SUCCESS The function complete successfully.
+ @retval EFI_OUT_OF_RESOURCES No enough memory to complete this function.
---*/
+**/
+EFI_STATUS
+BOpt_GetLegacyOptions (
+ VOID
+ )
{
BM_MENU_ENTRY *NewMenuEntry;
BM_LEGACY_DEVICE_CONTEXT *NewLegacyDevContext;
@@ -780,7 +771,7 @@ Returns: sizeof (DescString),
DescString
);
- NewLegacyDevContext->Description = EfiAllocateZeroPool (StrSize (DescString));
+ NewLegacyDevContext->Description = AllocateZeroPool (StrSize (DescString));
if (NULL == NewLegacyDevContext->Description) {
break;
}
@@ -830,6 +821,14 @@ Returns: return EFI_SUCCESS;
}
+/**
+ Free out resouce allocated from Legacy Boot Options.
+
+ @param VOID.
+
+ @return VOID.
+
+**/
VOID
BOpt_FreeLegacyOptions (
VOID
@@ -842,24 +841,20 @@ BOpt_FreeLegacyOptions ( BOpt_FreeMenu (&LegacyBEVMenu);
}
-EFI_STATUS
-BOpt_GetBootOptions (
- IN BMM_CALLBACK_DATA *CallbackData
- )
-/*++
-
-Routine Description:
+/**
Build the BootOptionMenu according to BootOrder Variable.
- This Routine will access the Boot#### to get EFI_LOAD_OPTION
+ This Routine will access the Boot#### to get EFI_LOAD_OPTION.
-Arguments:
- None
+ @param None
-Returns:
- The number of the Var Boot####
+ @return The number of the Var Boot####.
---*/
+**/
+EFI_STATUS
+BOpt_GetBootOptions (
+ IN BMM_CALLBACK_DATA *CallbackData
+ )
{
UINTN Index;
UINT16 BootString[10];
@@ -929,7 +924,7 @@ Returns: continue;
}
- LoadOption = EfiAllocateZeroPool (BootOptionSize);
+ LoadOption = AllocateZeroPool (BootOptionSize);
if (LoadOption == NULL) {
continue;
}
@@ -1014,7 +1009,7 @@ Returns: LoadOptionPtr += sizeof (UINT16);
StringSize = StrSize ((UINT16 *) LoadOptionPtr);
- NewLoadContext->Description = EfiAllocateZeroPool (StringSize);
+ NewLoadContext->Description = AllocateZeroPool (StringSize);
ASSERT (NewLoadContext->Description != NULL);
CopyMem (
NewLoadContext->Description,
@@ -1025,7 +1020,7 @@ Returns: LoadOptionPtr += StringSize;
- NewLoadContext->FilePathList = EfiAllocateZeroPool (NewLoadContext->FilePathListLength);
+ NewLoadContext->FilePathList = AllocateZeroPool (NewLoadContext->FilePathListLength);
ASSERT (NewLoadContext->FilePathList != NULL);
CopyMem (
NewLoadContext->FilePathList,
@@ -1051,7 +1046,7 @@ Returns: StringSize -
NewLoadContext->FilePathListLength;
- NewLoadContext->OptionalData = EfiAllocateZeroPool (OptionalDataSize);
+ NewLoadContext->OptionalData = AllocateZeroPool (OptionalDataSize);
ASSERT (NewLoadContext->OptionalData != NULL);
CopyMem (
NewLoadContext->OptionalData,
@@ -1072,46 +1067,22 @@ Returns: return MenuCount;
}
-CHAR16 *
-BdsStrCpy (
- OUT CHAR16 *Destination,
- IN CONST CHAR16 *Source
- )
-{
- CHAR16 *ReturnValue;
+/**
- //
- // Destination cannot be NULL
- //
- ASSERT (Destination != NULL);
+ Append file name to existing file name.
- ReturnValue = Destination;
- while (*Source != L'\0') {
- *(Destination++) = *(Source++);
- }
- *Destination = 0;
- return ReturnValue;
-}
+ @param Str1 The existing file name
+ @param Str2 The file name to be appended
+ @return Allocate a new string to hold the appended result.
+ Caller is responsible to free the returned string.
+
+**/
CHAR16 *
BOpt_AppendFileName (
IN CHAR16 *Str1,
IN CHAR16 *Str2
)
-/*++
-
-Routine Description
- Append file name to existing file name.
-
-Arguments:
- Str1 - existing file name
- Str2 - file name to be appended
-
-Returns:
- Allocate a new string to hold the appended result.
- Caller is responsible to free the returned string.
-
---*/
{
UINTN Size1;
UINTN Size2;
@@ -1121,7 +1092,7 @@ Returns: Size1 = StrSize (Str1);
Size2 = StrSize (Str2);
- Str = EfiAllocateZeroPool (Size1 + Size2 + sizeof (CHAR16));
+ Str = AllocateZeroPool (Size1 + Size2 + sizeof (CHAR16));
ASSERT (Str != NULL);
StrCat (Str, Str1);
@@ -1140,13 +1111,13 @@ Returns: // DO NOT convert the .. if it is at the end of the string. This will
// break the .. behavior in changing directories.
//
- BdsStrCpy (LastSlash, Ptr + 3);
+ StrCpy (LastSlash, Ptr + 3);
Ptr = LastSlash;
} else if (*Ptr == '\\' && *(Ptr + 1) == '.' && *(Ptr + 2) == '\\') {
//
// Convert a "\.\" to a "\"
//
- BdsStrCpy (Ptr, Ptr + 2);
+ StrCpy (Ptr, Ptr + 2);
Ptr = LastSlash;
} else if (*Ptr == '\\') {
LastSlash = Ptr;
@@ -1158,24 +1129,21 @@ Returns: return Str;
}
-BOOLEAN
-BOpt_IsEfiImageName (
- IN UINT16 *FileName
- )
-/*++
+/**
-Routine Description
Check whether current FileName point to a valid
Efi Image File.
-Arguments:
- FileName - File need to be checked.
+ @param FileName File need to be checked.
-Returns:
- TRUE - Is Efi Image
- FALSE - Not a valid Efi Image
+ @retval TRUE Is Efi Image
+ @retval FALSE Not a valid Efi Image
---*/
+**/
+BOOLEAN
+BOpt_IsEfiImageName (
+ IN UINT16 *FileName
+ )
{
//
// Search for ".efi" extension
@@ -1203,25 +1171,22 @@ Returns: return FALSE;
}
-BOOLEAN
-BOpt_IsEfiApp (
- IN EFI_FILE_HANDLE Dir,
- IN UINT16 *FileName
- )
-/*++
+/**
-Routine Description:
Check whether current FileName point to a valid Efi Application
-Arguments:
- Dir - Pointer to current Directory
- FileName - Pointer to current File name.
+ @param Dir Pointer to current Directory
+ @param FileName Pointer to current File name.
-Returns:
- TRUE - Is a valid Efi Application
- FALSE - not a valid Efi Application
+ @retval TRUE Is a valid Efi Application
+ @retval FALSE not a valid Efi Application
---*/
+**/
+BOOLEAN
+BOpt_IsEfiApp (
+ IN EFI_FILE_HANDLE Dir,
+ IN UINT16 *FileName
+ )
{
UINTN BufferSize;
EFI_IMAGE_DOS_HEADER DosHdr;
@@ -1270,26 +1235,23 @@ Returns: }
}
-EFI_STATUS
-BOpt_FindDrivers (
- VOID
- )
-/*++
+/**
-Routine Description
Find drivers that will be added as Driver#### variables from handles
in current system environment
All valid handles in the system except those consume SimpleFs, LoadFile
are stored in DriverMenu for future use.
-Arguments:
- None
+ @param VOID
-Returns:
- EFI_SUCCESS
- Others
+ @retval EFI_SUCCESS The function complets successfully.
+ @return Other value if failed to build the DriverMenu.
---*/
+**/
+EFI_STATUS
+BOpt_FindDrivers (
+ VOID
+ )
{
UINTN NoDevicePathHandles;
EFI_HANDLE *DevicePathHandle;
@@ -1327,10 +1289,6 @@ Returns: for (Index = 0; Index < NoDevicePathHandles; Index++) {
CurHandle = DevicePathHandle[Index];
- //
- // Check whether this handle support
- // driver binding
- //
Status = gBS->HandleProtocol (
CurHandle,
&gEfiSimpleFileSystemProtocolGuid,
@@ -1371,21 +1329,19 @@ Returns: return EFI_SUCCESS;
}
-UINT16
-BOpt_GetBootOptionNumber (
- VOID
- )
-/*++
+/**
-Routine Description:
- Get the Option Number that does not used
+ Get the Option Number that has not been allocated for use.
-Arguments:
+ @param VOID
-Returns:
- The Option Number
+ @return The available Option Number.
---*/
+**/
+UINT16
+BOpt_GetBootOptionNumber (
+ VOID
+ )
{
BM_MENU_ENTRY *NewMenuEntry;
UINT16 *BootOrderList;
@@ -1423,15 +1379,16 @@ Returns: }
if (Found) {
- UnicodeSPrint (StrTemp, 100, L"Boot%04x", Index);
- DEBUG((DEBUG_ERROR,"INdex= %s\n", StrTemp));
- OptionBuffer = BdsLibGetVariableAndSize (
- StrTemp,
- &gEfiGlobalVariableGuid,
- &OptionSize
- );
- if (NULL == OptionBuffer)
- break;
+ UnicodeSPrint (StrTemp, 100, L"Boot%04x", Index);
+ DEBUG((DEBUG_ERROR,"INdex= %s\n", StrTemp));
+ OptionBuffer = BdsLibGetVariableAndSize (
+ StrTemp,
+ &gEfiGlobalVariableGuid,
+ &OptionSize
+ );
+ if (NULL == OptionBuffer) {
+ break;
+ }
}
}
//
@@ -1448,21 +1405,19 @@ Returns: return Number;
}
-UINT16
-BOpt_GetDriverOptionNumber (
- VOID
- )
-/*++
+/**
-Routine Description:
- Get the Option Number that does not used
+ Get the Option Number that is not in use.
-Arguments:
+ @param VOID
-Returns:
- The Option Number
+ @return The unused Option Number.
---*/
+**/
+UINT16
+BOpt_GetDriverOptionNumber (
+ VOID
+ )
{
BM_MENU_ENTRY *NewMenuEntry;
UINT16 *DriverOrderList;
@@ -1514,21 +1469,21 @@ Returns: return Number;
}
-EFI_STATUS
-BOpt_GetDriverOptions (
- IN BMM_CALLBACK_DATA *CallbackData
- )
-/*++
+/**
-Routine Description:
Build up all DriverOptionMenu
-Arguments:
+ @param CallbackData The BMM context data.
-Returns:
- The Option Number
+ @return EFI_SUCESS The functin completes successfully.
+ @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation.
+
---*/
+**/
+EFI_STATUS
+BOpt_GetDriverOptions (
+ IN BMM_CALLBACK_DATA *CallbackData
+ )
{
UINTN Index;
UINT16 DriverString[12];
@@ -1579,7 +1534,7 @@ Returns: continue;
}
- LoadOption = EfiAllocateZeroPool (DriverOptionSize);
+ LoadOption = AllocateZeroPool (DriverOptionSize);
if (LoadOption == NULL) {
continue;
}
@@ -1619,7 +1574,7 @@ Returns: LoadOptionPtr += sizeof (UINT16);
StringSize = StrSize ((UINT16 *) LoadOptionPtr);
- NewLoadContext->Description = EfiAllocateZeroPool (StringSize);
+ NewLoadContext->Description = AllocateZeroPool (StringSize);
ASSERT (NewLoadContext->Description != NULL);
CopyMem (
NewLoadContext->Description,
@@ -1630,7 +1585,7 @@ Returns: LoadOptionPtr += StringSize;
- NewLoadContext->FilePathList = EfiAllocateZeroPool (NewLoadContext->FilePathListLength);
+ NewLoadContext->FilePathList = AllocateZeroPool (NewLoadContext->FilePathListLength);
ASSERT (NewLoadContext->FilePathList != NULL);
CopyMem (
NewLoadContext->FilePathList,
@@ -1656,7 +1611,7 @@ Returns: StringSize -
NewLoadContext->FilePathListLength;
- NewLoadContext->OptionalData = EfiAllocateZeroPool (OptionalDataSize);
+ NewLoadContext->OptionalData = AllocateZeroPool (OptionalDataSize);
ASSERT (NewLoadContext->OptionalData != NULL);
CopyMem (
NewLoadContext->OptionalData,
|