* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * Modifications copyright (c) 2012 Roderick W. Smith
- *
+ * Modifications copyright (c) 2012-2013 Roderick W. Smith
+ *
* Modifications distributed under the terms of the GNU General Public
* License (GPL) version 3 (GPLv3), a copy of which must be distributed
* with this source code or binaries made from it.
- *
+ *
*/
#ifndef __GLOBAL_H_
#define __GLOBAL_H_
-#include "efi.h"
-#include "efilib.h"
+#ifdef __MAKEWITH_GNUEFI
+#include <efi.h>
+#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 TAG_FIRMWARE (13)
+#define TAG_MEMTEST (14)
+#define NUM_TOOLS (14)
#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
+
+#ifdef __MAKEWITH_GNUEFI
+//
+// 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_BTRFS 7
+#define FS_TYPE_ISO9660 8
+
+// Names of binaries that can manage MOKs....
+#define MOK_NAMES L"MokManager.efi,HashTool.efi,HashTool-signed.efi"
+// Directories to search for these MOK-managing programs. Note that SelfDir is
+// searched in addition to these locations....
+#define MOK_LOCATIONS L"\\,EFI\\tools,EFI\\fedora,EFI\\redhat,EFI\\ubuntu,EFI\\suse,EFI\\opensuse,EFI\\altlinux"
+// Directories to search for memtest86....
+#define MEMTEST_LOCATIONS L"EFI\\tools,EFI\\tools\\memtest86,EFI\\tools\\memtest,EFI\\memtest86,EFI\\memtest"
//
// global definitions
EFI_HANDLE DeviceHandle;
EFI_FILE *RootDir;
CHAR16 *VolName;
+ UINTN VolNumber;
+ EG_IMAGE *VolIconImage;
EG_IMAGE *VolBadgeImage;
UINTN DiskKind;
BOOLEAN IsAppleLegacy;
EFI_BLOCK_IO *WholeDiskBlockIO;
EFI_DEVICE_PATH *WholeDiskDevicePath;
MBR_PARTITION_INFO *MbrPartitionTable;
+ BOOLEAN IsReadable;
+ UINT32 FSType;
} REFIT_VOLUME;
typedef struct _refit_menu_entry {
REFIT_MENU_ENTRY **Entries;
UINTN TimeoutSeconds;
CHAR16 *TimeoutText;
+ CHAR16 *Hint1;
+ CHAR16 *Hint2;
} REFIT_MENU_SCREEN;
typedef struct {
} LOADER_ENTRY;
typedef struct {
- REFIT_MENU_ENTRY me;
- REFIT_VOLUME *Volume;
- CHAR16 *LoadOptions;
- BOOLEAN Enabled;
+ REFIT_MENU_ENTRY me;
+ REFIT_VOLUME *Volume;
+#ifndef __MAKEWITH_GNUEFI
+ BDS_COMMON_OPTION *BdsOption;
+#endif
+ CHAR16 *LoadOptions;
+ BOOLEAN Enabled;
} LEGACY_ENTRY;
typedef struct {
BOOLEAN TextOnly;
+ BOOLEAN ScanAllLinux;
+ UINTN RequestedScreenWidth;
+ UINTN RequestedScreenHeight;
+ UINTN BannerBottomEdge;
+ UINTN RequestedTextMode;
UINTN Timeout;
UINTN HideUIFlags;
UINTN MaxTags; // max. number of OS entries to show simultaneously in graphics mode
+ UINTN GraphicsFor;
+ UINTN LegacyType;
+ UINTN ScanDelay;
+ UINTN ScreensaverTime;
CHAR16 *BannerFileName;
+ EG_IMAGE *ScreenBackground;
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;
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);