]> code.delx.au - refind/blobdiff - EfiLib/BdsHelper.c
Further refinement of the legacy UEFI boot feature.
[refind] / EfiLib / BdsHelper.c
index 80eb7f20b9fcc55f7b3fc1182b532fa2a844ab8b..af17d4f0e51f8c8e2528bb6354aedda4303065ae 100644 (file)
@@ -7,6 +7,8 @@
 
 #include "BdsHelper.h"
 
+EFI_GUID gEfiLegacyBootProtocolGuid     = { 0xdb9a1e3d, 0x45cb, 0x4abb, { 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d }};
+
 /**
     Internal helper function.
 
@@ -30,18 +32,17 @@ UpdateBbsTable (
 {
     UINT16  Idx;
     EFI_LEGACY_BIOS_PROTOCOL  *LegacyBios;
-    EFI_GUID EfiLegacyBootProtocolGuid     = { 0xdb9a1e3d, 0x45cb, 0x4abb, { 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d }};
     EFI_STATUS                Status;
     UINT16                       HddCount = 0;
     HDD_INFO                     *HddInfo = NULL; 
     UINT16                       BbsCount = 0; 
     BBS_TABLE                 *LocalBbsTable = NULL;
 
-    Status = gBS->LocateProtocol (&EfiLegacyBootProtocolGuid, NULL, (VOID **) &LegacyBios);
+    Status = gBS->LocateProtocol (&gEfiLegacyBootProtocolGuid, NULL, (VOID **) &LegacyBios);
     if (EFI_ERROR (Status)) {
       return;
     }
-    
+
     Status = LegacyBios->GetBbsInfo (LegacyBios, &HddCount, &HddInfo, &BbsCount, &LocalBbsTable);
 
     //Print (L"\n");
@@ -83,25 +84,17 @@ UpdateBbsTable (
 }
 
 // Internal helper function
-BOOLEAN ArrayContains(UINT16* Arr, UINT8 ArrLen, UINT8 Target)
-{
-    UINT8 i;
-    for(i = 0; i < ArrLen; i++)
-    {
-       if(Arr[i] == Target)
-          return TRUE;
-    }
-
-  return FALSE;
-}
-
-/**
-    True if the DeviceType is supported by rEFInd, false otherwise.
-*/
-BOOLEAN IsBbsDeviceTypeSupported(UINT16 DeviceType)
-{
-    return ArrayContains(SupportedLegacyDevices, sizeof(SupportedLegacyDevices), DeviceType);
-}
+// BOOLEAN ArrayContains(UINT16* Arr, UINT8 ArrLen, UINT8 Target)
+// {
+//     UINT8 i;
+//     for(i = 0; i < ArrLen; i++)
+//     {
+//        if(Arr[i] == Target)
+//           return TRUE;
+//     }
+// 
+//   return FALSE;
+// }
 
 /**
     Boot the legacy system with the boot option
@@ -120,34 +113,31 @@ BdsLibDoLegacyBoot (
 {
     EFI_STATUS                Status;
     EFI_LEGACY_BIOS_PROTOCOL  *LegacyBios;
-    EFI_GUID EfiLegacyBootProtocolGuid     = { 0xdb9a1e3d, 0x45cb, 0x4abb, { 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d }};
-    EFI_GUID EfiGlobalVariableGuid     = { 0x8BE4DF61, 0x93CA, 0x11D2, { 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C }};
     BBS_BBS_DEVICE_PATH *OptionBBS;
 
-    Status = gBS->LocateProtocol (&EfiLegacyBootProtocolGuid, NULL, (VOID **) &LegacyBios);
+    Status = gBS->LocateProtocol (&gEfiLegacyBootProtocolGuid, NULL, (VOID **) &LegacyBios);
     if (EFI_ERROR (Status)) {
       return EFI_UNSUPPORTED;
     }
     OptionBBS = (BBS_BBS_DEVICE_PATH *) Option->DevicePath;
 
-    //Print(L"\n\n");
-    //Print(L"Option->Name='%s'\n", Option->OptionName);
-    //Print(L"Option->Number='%d'\n", Option->OptionNumber);
-    //Print(L"Option->Description='%s'\n", Option->Description);
-    //Print(L"Option->LoadOptionsSize='%d'\n",Option->LoadOptionsSize);
-    //Print(L"Option->BootCurrent='%d'\n",Option->BootCurrent);
-    //Print(L"Option->DevicePath->Type= '%d'\n", Option->DevicePath->Type);
-    //Print(L"Option->DevicePath->SubType= '%d'\n", Option->DevicePath->SubType);
-    //Print(L"Option->DevicePath->Length[0]= '%d'\n", Option->DevicePath->Length[0]);
-    //Print(L"Option->DevicePath->Length[1]= '%d'\n", Option->DevicePath->Length[1]); 
-    //Print(L"OptionBBS->DeviceType='%d'\n",OptionBBS->DeviceType);
-    //Print(L"OptionBBS->StatusFlag='%d'\n",OptionBBS->StatusFlag);
-    //Print(L"OptionBBS->String[0]='%c'\n",OptionBBS->String[0]);
-    //Print(L"About to legacy boot!\n");
-    //PauseForKey();
+//     Print(L"\n\n");
+//     Print(L"Option->Name='%s'\n", Option->OptionName);
+//     Print(L"Option->Number='%d'\n", Option->OptionNumber);
+//     Print(L"Option->Description='%s'\n", Option->Description);
+//     Print(L"Option->LoadOptionsSize='%d'\n",Option->LoadOptionsSize);
+//     Print(L"Option->BootCurrent='%d'\n",Option->BootCurrent);
+//     Print(L"Option->DevicePath->Type= '%d'\n", Option->DevicePath->Type);
+//     Print(L"Option->DevicePath->SubType= '%d'\n", Option->DevicePath->SubType);
+//     Print(L"Option->DevicePath->Length[0]= '%d'\n", Option->DevicePath->Length[0]);
+//     Print(L"Option->DevicePath->Length[1]= '%d'\n", Option->DevicePath->Length[1]);
+//     Print(L"OptionBBS->DeviceType='%d'\n",OptionBBS->DeviceType);
+//     Print(L"OptionBBS->StatusFlag='%d'\n",OptionBBS->StatusFlag);
+//     Print(L"OptionBBS->String[0]='%c'\n",OptionBBS->String[0]);
+//     Print(L"About to legacy boot!\n");
+//     PauseForKey();
 
     UpdateBbsTable(OptionBBS->DeviceType); 
 
     return LegacyBios->LegacyBoot (LegacyBios, (BBS_BBS_DEVICE_PATH *) Option->DevicePath, Option->LoadOptionsSize, Option->LoadOptions);
-}
-
+}
\ No newline at end of file