111 lines
3.7 KiB
C
111 lines
3.7 KiB
C
/**
|
|
* 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 <belliash@codingworkshop.eu.org>
|
|
*/
|
|
|
|
#ifndef __XTDK_BMTYPES_H
|
|
#define __XTDK_BMTYPES_H
|
|
|
|
#include <xttypes.h>
|
|
#include <xtuefi.h>
|
|
|
|
|
|
/* 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_CONFIG_ENTRY
|
|
{
|
|
LIST_ENTRY Flink;
|
|
PWCHAR Name;
|
|
PWCHAR Value;
|
|
} XTBL_CONFIG_ENTRY, *PXTBL_CONFIG_ENTRY;
|
|
|
|
/* XTLDR Configuration section */
|
|
typedef struct _XTBL_CONFIG_SECTION
|
|
{
|
|
LIST_ENTRY Flink;
|
|
LIST_ENTRY Options;
|
|
PWCHAR SectionName;
|
|
} XTBL_CONFIG_SECTION, *PXTBL_CONFIG_SECTION;
|
|
|
|
/* 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 */
|