/** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory * FILE: sdk/xtdk/bmtypes.h * DESCRIPTION: XT Boot Manager structures definitions * DEVELOPERS: Rafal Kupiec */ #ifndef __XTDK_BMTYPES_H #define __XTDK_BMTYPES_H #include #include /* XTLDR directories */ #define XTBL_LOADER_DIRECTORY L"\\EFI\\BOOT\\XTLDR\\" #define XTBL_THEMES_DIRECTORY L"\\EFI\\BOOT\\XTLDR\\THEMES\\" /* EFI XT boot devices */ #define XTBL_BOOT_DEVICE_UNKNOWN 0x00 #define XTBL_BOOT_DEVICE_CDROM 0x01 #define XTBL_BOOT_DEVICE_FLOPPY 0x02 #define XTBL_BOOT_DEVICE_HARDDISK 0x03 #define XTBL_BOOT_DEVICE_RAMDISK 0x04 /* XTLDR Debug Port type definitions */ #define XTBL_DEBUGPORT_SCREEN 1 #define XTBL_DEBUGPORT_SERIAL 2 /* Loader protocol routine pointers */ typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle); typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)(); typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_PRINT)(IN PUINT16 Format, IN ...); typedef VOID (*PBL_DEBUG_PRINT)(IN PUINT16 Format, IN ...); typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(IN UINT_PTR MapKey); typedef EFI_STATUS (*PBL_FREE_PAGES)(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory); typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle); typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); /* XTLDR Configuration data */ typedef struct _XTBL_CONFIGURATION { PWCHAR Default; PWCHAR Debug; ULONG DebugPort; BOOLEAN Shell; ULONG Timeout; PWCHAR Tune; } XTBL_CONFIGURATION, *PXTBL_CONFIGURATION; /* XTLDR Status data */ typedef struct _XTBL_STATUS { BOOLEAN BootServices; EFI_HANDLE ImageHandle; PEFI_SYSTEM_TABLE SystemTable; } XTBL_STATUS, *PXTBL_STATUS; /* XTLDR Loader protocol */ typedef struct _XTBL_LOADER_PROTOCOL { struct { PBL_CONSOLE_CLEAR_SCREEN ClearScreen; PBL_CONSOLE_DISABLE_CURSOR DisableCursor; PBL_CONSOLE_ENABLE_CURSOR EnableCursor; PBL_CONSOLE_PRINT Print; } Console; struct { PBL_DEBUG_PRINT Print; } Debug; struct { PBL_CLOSE_VOLUME CloseVolume; PBL_OPEN_VOLUME OpenVolume; PBL_READ_FILE ReadFile; } Disk; struct { PBL_ALLOCATE_PAGES AllocatePages; PBL_ALLOCATE_POOL AllocatePool; PBL_FREE_PAGES FreePages; PBL_FREE_POOL FreePool; } Memory; struct { PBL_OPEN_XT_PROTOCOL Open; } Protocol; struct { PBL_EXIT_BOOT_SERVICES ExitBootServices; PBL_SLEEP_EXECUTION SleepExecution; } Util; } XTBL_LOADER_PROTOCOL, *PXTBL_LOADER_PROTOCOL; #endif /* __XTDK_BMTYPES_H */