#define TAG_MEMTEST (15)
#define TAG_GDISK (16)
#define TAG_NETBOOT (17)
-#define NUM_TOOLS (18)
+#define TAG_CSR_ROTATE (18)
+#define NUM_TOOLS (19)
#define NUM_SCAN_OPTIONS 10
#define ICON_SIZE_SMALL 1
#define ICON_SIZE_BIG 2
-// The constants related to Apple's System Integrity Protection (SIP)....
-#define CSR_GUID { 0x7c436110, 0xab2a, 0x4bbb, { 0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82 } };
-// These codes are returned in the first byte of the csr-active-config variable
-#define CSR_ALLOW_UNTRUSTED_KEXTS 0x01
-#define CSR_ALLOW_UNRESTRICTED_FS 0x02
-#define CSR_ALLOW_TASK_FOR_PID 0x04
-#define CSR_ALLOW_KERNEL_DEBUGGER 0x08
-#define CSR_ALLOW_APPLE_INTERNAL 0x10
-#define CSR_ALLOW_UNRESTRICTED_DTRACE 0x20
-#define CSR_ALLOW_UNRESTRICTED_NVRAM 0x40
-// Some summaries....
-#define SIP_ENABLED CSR_ALLOW_APPLE_INTERNAL
-#define SIP_DISABLED (CSR_ALLOW_UNRESTRICTED_NVRAM | \
- CSR_ALLOW_UNRESTRICTED_DTRACE | \
- CSR_ALLOW_APPLE_INTERNAL | \
- CSR_ALLOW_TASK_FOR_PID | \
- CSR_ALLOW_UNRESTRICTED_FS | \
- CSR_ALLOW_UNTRUSTED_KEXTS)
-
// Names of binaries that can manage MOKs....
#define MOK_NAMES L"MokManager.efi,HashTool.efi,HashTool-signed.efi,KeyTool.efi,KeyTool-signed.efi"
// Directories to search for these MOK-managing programs. Note that SelfDir is
// Files that may be Windows recovery files
#define WINDOWS_RECOVERY_FILES L"EFI\\Microsoft\\Boot\\LrsBootmgr.efi,Recovery:\\EFI\\BOOT\\bootx64.efi,Recovery:\\EFI\\BOOT\\bootia32.efi"
+// Filename patterns that identify EFI boot loaders. Note that a single case (either L"*.efi" or
+// L"*.EFI") is fine for most systems; but Gigabyte's buggy Hybrid EFI does a case-sensitive
+// comparison when it should do a case-insensitive comparison, so I'm doubling this up. It does
+// no harm on other computers, AFAIK. In theory, every case variation should be done for
+// completeness, but that's ridiculous....
+#define LOADER_MATCH_PATTERNS L"*.efi,*.EFI"
+
// Definitions for the "hideui" option in refind.conf
#define HIDEUI_FLAG_NONE (0x0000)
#define HIDEUI_FLAG_BANNER (0x0001)
// global types
+typedef struct _uint32_list {
+ UINT32 Value;
+ struct _uint32_list *Next;
+} UINT32_LIST;
+
typedef struct {
UINT8 Flags;
UINT8 StartCHS1;
CHAR16 *DriverDirs;
CHAR16 *IconsDir;
CHAR16 *SpoofOSXVersion;
+ UINT32_LIST *CsrValues;
UINTN ShowTools[NUM_TOOLS];
CHAR8 ScanFor[NUM_SCAN_OPTIONS]; // codes of types of loaders for which to scan
} REFIT_CONFIG;
OUT UINTN *ErrorInStep,
IN BOOLEAN Verbose,
IN BOOLEAN IsDriver);
+EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath,
+ IN CHAR16 *LoadOptions, IN UINTN LoaderType,
+ IN CHAR16 *ImageTitle, IN CHAR8 OSType,
+ OUT UINTN *ErrorInStep,
+ IN BOOLEAN Verbose,
+ IN BOOLEAN IsDriver);
LOADER_ENTRY *InitializeLoaderEntry(IN LOADER_ENTRY *Entry);
REFIT_MENU_SCREEN *InitializeSubScreen(IN LOADER_ENTRY *Entry);
VOID GenerateSubScreen(LOADER_ENTRY *Entry, IN REFIT_VOLUME *Volume, IN BOOLEAN GenerateReturn);