]> code.delx.au - refind/blobdiff - refind/global.h
Version supports Secure Boot/MOK verification of binaries.
[refind] / refind / global.h
index 905f79adf1e2019079b6deacfaaba51c90476b0b..ac9bc7a92fec58399ee3ccb08089dc33fa8f0c25 100644 (file)
@@ -50,6 +50,7 @@
 #include <efilib.h>
 #else
 #include "../include/tiano_includes.h"
+#include "../EfiLib/GenericBdsLib.h"
 #endif
 
 #include "libeg.h"
 #define REFIT_DEBUG (0)
 
 // Tag classifications; used in various ways.
-#define TAG_ABOUT    (1)
-#define TAG_REBOOT   (2)
-#define TAG_SHUTDOWN (3)
-#define TAG_TOOL     (4)
-#define TAG_LOADER   (5)
-#define TAG_LEGACY   (6)
-#define TAG_EXIT     (7)
-#define TAG_SHELL    (8)
-#define TAG_GPTSYNC  (9)
-#define NUM_TOOLS    (9)
+#define TAG_ABOUT          (1)
+#define TAG_REBOOT         (2)
+#define TAG_SHUTDOWN       (3)
+#define TAG_TOOL           (4)
+#define TAG_LOADER         (5)
+#define TAG_LEGACY         (6)
+#define TAG_EXIT           (7)
+#define TAG_SHELL          (8)
+#define TAG_GPTSYNC        (9)
+#define TAG_LEGACY_UEFI    (10)
+#define TAG_APPLE_RECOVERY (11)
+#define TAG_MOK_TOOL       (12)
+#define NUM_TOOLS          (11)
 
 #define NUM_SCAN_OPTIONS 10
 
 #define GRAPHICS_FOR_GRUB       8
 #define GRAPHICS_FOR_WINDOWS   16
 
+// Type of legacy (BIOS) boot support detected
+#define LEGACY_TYPE_NONE 0
+#define LEGACY_TYPE_MAC  1
+#define LEGACY_TYPE_UEFI 2
+
+#ifndef __MAKEWITH_TIANO
+//
+// define BBS Device Types
+//
+#define BBS_FLOPPY        0x01
+#define BBS_HARDDISK      0x02
+#define BBS_CDROM         0x03
+#define BBS_PCMCIA        0x04
+#define BBS_USB           0x05
+#define BBS_EMBED_NETWORK 0x06
+#define BBS_BEV_DEVICE    0x80
+#define BBS_UNKNOWN       0xff
+#endif
+
+// BIOS Boot Specification (BBS) device types, as returned in DevicePath->Type field
+#define DEVICE_TYPE_HW         0x01
+#define DEVICE_TYPE_ACPI       0x02 /* returned by UEFI boot loader on USB */
+#define DEVICE_TYPE_MESSAGING  0x03
+#define DEVICE_TYPE_MEDIA      0x04 /* returned by EFI boot loaders on hard disk */
+#define DEVICE_TYPE_BIOS       0x05 /* returned by legacy (BIOS) boot loaders */
+#define DEVICE_TYPE_END        0x75 /* end of path */
+
+//TODO: may want to make this configurable via config file
+//static UINT16 SupportedLegacyDevices[] = {BBS_HARDDISK, BBS_CDROM, BBS_USB};
+
 //
 // global definitions
 //
@@ -156,10 +190,13 @@ typedef struct {
 } LOADER_ENTRY;
 
 typedef struct {
-   REFIT_MENU_ENTRY me;
-   REFIT_VOLUME     *Volume;
-   CHAR16           *LoadOptions;
-   BOOLEAN          Enabled;
+   REFIT_MENU_ENTRY  me;
+   REFIT_VOLUME      *Volume;
+#ifdef __MAKEWITH_TIANO
+   BDS_COMMON_OPTION *BdsOption;
+#endif // __MAKEWITH_TIANO
+   CHAR16            *LoadOptions;
+   BOOLEAN           Enabled;
 } LEGACY_ENTRY;
 
 typedef struct {
@@ -171,6 +208,8 @@ typedef struct {
    UINTN       HideUIFlags;
    UINTN       MaxTags;     // max. number of OS entries to show simultaneously in graphics mode
    UINTN       GraphicsFor;
+   UINTN       LegacyType;
+   UINTN       ScanDelay;
    CHAR16      *BannerFileName;
    CHAR16      *SelectionSmallFileName;
    CHAR16      *SelectionBigFileName;
@@ -197,6 +236,9 @@ extern UINTN            VolumesCount;
 
 extern REFIT_CONFIG     GlobalConfig;
 
+extern EFI_GUID gEfiLegacyBootProtocolGuid;
+extern EFI_GUID gEfiGlobalVariableGuid;
+
 LOADER_ENTRY *InitializeLoaderEntry(IN LOADER_ENTRY *Entry);
 REFIT_MENU_SCREEN *InitializeSubScreen(IN LOADER_ENTRY *Entry);
 VOID GenerateSubScreen(LOADER_ENTRY *Entry, IN REFIT_VOLUME *Volume);