X-Git-Url: https://code.delx.au/refind/blobdiff_plain/8a3ec8229a0dd64677196895baa4733b0c241288..87bc9afcef9d2fc27b8bcff46fa9c88e8962fcae:/refind/global.h diff --git a/refind/global.h b/refind/global.h index 2c0d681..1d4a184 100644 --- a/refind/global.h +++ b/refind/global.h @@ -45,22 +45,81 @@ #ifndef __GLOBAL_H_ #define __GLOBAL_H_ -#include "efi.h" -#include "efilib.h" +#ifdef __MAKEWITH_GNUEFI +#include +#include +#else +#include "../include/tiano_includes.h" +#include "../EfiLib/GenericBdsLib.h" +#endif #include "libeg.h" #define REFIT_DEBUG (0) -#define TAG_ABOUT (1) -#define TAG_RESET (2) -#define TAG_SHUTDOWN (3) -#define TAG_TOOL (4) -#define TAG_LOADER (5) -#define TAG_LEGACY (6) +// 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 TAG_LEGACY_UEFI (10) +#define TAG_APPLE_RECOVERY (11) +#define TAG_MOK_TOOL (12) +#define NUM_TOOLS (11) #define NUM_SCAN_OPTIONS 10 +#define DEFAULT_ICONS_DIR L"icons" + +// OS bit codes; used in GlobalConfig.GraphicsOn +#define GRAPHICS_FOR_OSX 1 +#define GRAPHICS_FOR_LINUX 2 +#define GRAPHICS_FOR_ELILO 4 +#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 */ + +// Filesystem type identifiers. Not all are yet used.... +#define FS_TYPE_UNKNOWN 0 +#define FS_TYPE_FAT 1 +#define FS_TYPE_EXT2 2 +#define FS_TYPE_EXT3 3 +#define FS_TYPE_EXT4 4 +#define FS_TYPE_HFSPLUS 5 +#define FS_TYPE_REISERFS 6 +#define FS_TYPE_ISO9660 7 + // // global definitions // @@ -85,6 +144,7 @@ typedef struct { EFI_HANDLE DeviceHandle; EFI_FILE *RootDir; CHAR16 *VolName; + EG_IMAGE *VolIconImage; EG_IMAGE *VolBadgeImage; UINTN DiskKind; BOOLEAN IsAppleLegacy; @@ -98,6 +158,8 @@ typedef struct { EFI_BLOCK_IO *WholeDiskBlockIO; EFI_DEVICE_PATH *WholeDiskDevicePath; MBR_PARTITION_INFO *MbrPartitionTable; + BOOLEAN IsReadable; + UINT32 FSType; } REFIT_VOLUME; typedef struct _refit_menu_entry { @@ -136,22 +198,38 @@ 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 { BOOLEAN TextOnly; + BOOLEAN ScanAllLinux; + UINTN RequestedScreenWidth; + UINTN RequestedScreenHeight; + UINTN RequestedTextMode; UINTN Timeout; - UINTN DisableFlags; UINTN HideUIFlags; - UINTN MaxTags; // max. number of entries to show simultaneously in graphics mode + 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; CHAR16 *DefaultSelection; + CHAR16 *AlsoScan; + CHAR16 *DontScanVolumes; + CHAR16 *DontScanDirs; + CHAR16 *DontScanFiles; + CHAR16 *DriverDirs; + CHAR16 *IconsDir; + UINTN ShowTools[NUM_TOOLS]; CHAR8 ScanFor[NUM_SCAN_OPTIONS]; // codes of types of loaders for which to scan } REFIT_CONFIG; @@ -169,6 +247,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);