Skip to content

Commit 4412d4f

Browse files
belliashCodingWorkshop Signing Team
authored andcommitted
Rewrite core of the XTLDR boot loader
Reviewed-on: https://git.codingworkshop.eu.org/xt-sys/exectos/pulls/7 Reviewed-by: Piotr Likoski <[email protected]> Co-authored-by: Rafal Kupiec <[email protected]> Co-committed-by: Rafal Kupiec <[email protected]>
1 parent 44905bb commit 4412d4f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+6236
-2325
lines changed

KNOWN_ISSUES.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@
22
This is a list of well known bugs that exists in all master branch builds.
33

44
### XTLDR
5-
- [ ] In some specific scenarios (most probably EFI by Insyde) XTLDR cannot load modules. Calling the EFI's
6-
BootServices->LoadImage() fails with STATUS_EFI_NOT_FOUND (0x800000000000000E) status code. Possibly this is
7-
a bug in BlFindVolumeDevicePath() routine.
85
- [ ] EFI Runtime Services are not mapped properly into higher half. They are mapped itself, but all pointers inside
96
that structure point to some physical address that is unavailable after paging is enabled.

bootdata/xtldr/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
set_install_file(xtldr.ini efi/boot)
1+
set_install_file(xtldr.ini efi/boot/xtldr)

bootdata/xtldr/xtldr.ini

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
# Debug - enables the debugging port and consists of two comma-separated parameters: com port and baud rate;
77
# it is also possible to specify custom port address with: COM0:[address],[baud_rate]
88
# Default - specifies which operating system listen in config file will be started if no choice is made
9-
# Theme - allows to set a custom theme to personalize XTLDR's look'n'feel
9+
# Modules - supplies a list of modules that will be loaded in orded to extend XTLDR functionality
1010
# Timeout - sets the countdown timer (in seconds) before the default OS get started automatically
11-
# Tune - plays a tune on the pcspeaker right before the XTLDR loads
11+
# Tune - plays a tune on the pcspeaker right before the XTLDR boot menu shows up
1212
#
1313
# Another type of section is [OS-Section] which adds a new position (operating system) to the boot menu. Each type
1414
# of the operating system provides a set of available parameters. If unsupported option is added, it is being ignored
1515
# by the XT Boot Loader. The available options are:
16+
# BootModules - supplies a list of additional modules that will be loaded just before invoking the boot protocol
1617
# SystemName - sets a long operating system name that will be shown on the boot menu
1718
# SystemType - specifies an OS type from a predefined list of supported boot protocols
1819
# SystemPath - the ARC path, eg. multi(0)disk(0)rdisk(0)partition(1)
@@ -22,22 +23,24 @@
2223
# Parameters - specifies extra boot options for the kernel
2324

2425
[XTLDR]
25-
Tune=400 880 2 988 2 783 2 392 2 587 3
2626
Debug=COM1,115200
27-
Timeout=30
28-
Theme=Fancy
2927
Default=ExectOS
28+
Modules=beep
29+
Timeout=30
30+
Tune=400 880 2 988 2 783 2 392 2 587 3
3031

3132
[ExectOS]
3233
SystemName="ExectOS Operating System"
3334
SystemType=XTOS
35+
BootModules=xtos_o
3436
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
3537
KernelFile=xtoskrnl.exe
36-
Parameters=DEBUG DEBUGPORT=COM1,115200
38+
Parameters=DEBUG=COM1,115200
3739

3840
[Windows]
3941
SystemName="Microsoft Windows 2000"
4042
SystemType=NT50
43+
BootModules=ntos
4144
SystemPath=multi(0)disk(0)rdisk(0)partition(2)/Windows
4245
KernelFile=ntoskrnl.exe
4346
HalFile=hal.dll
@@ -46,6 +49,7 @@ Parameters=/NOGUIBOOT /MININT
4649
[Linux]
4750
SystemName="GNU/Linux"
4851
SystemType=LINUX
52+
BootModules=linux
4953
SystemPath=multi(0)disk(0)rdisk(0)partition(3)/boot
5054
KernelFile=vmlinuz
5155
InitrdFile=initramfs.cpio.gz

sdk/cmake/version.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ set(XTOS_COMPATIBLE_MINOR "3")
99
set(XTOS_COMPATIBLE_VERSION "0x0603")
1010
set(XTOS_COMPATIBLE_BUILD "9600")
1111

12+
# Set XTLDR version
13+
set(XTLDR_VERSION_MAJOR "0")
14+
set(XTLDR_VERSION_MINOR "1")
15+
1216
# Set common XTOS version variables
1317
string(TIMESTAMP XTOS_VERSION_YEAR %Y)
1418
string(TIMESTAMP XTOS_VERSION_DATE "%Y%m%d")

sdk/cmake/version/xtver.h.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,7 @@
2929
#define XTOS_COMPILER_NAME "@CMAKE_C_COMPILER_ID@"
3030
#define XTOS_COMPILER_VERSION "@CMAKE_C_COMPILER_VERSION@"
3131

32+
#define XTLDR_VERSION_MAJOR @XTLDR_VERSION_MAJOR@
33+
#define XTLDR_VERSION_MINOR @XTLDR_VERSION_MINOR@
34+
3235
#endif /* __XTGEN_XTVER_H */

sdk/xtdk/blfuncs.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* PROJECT: ExectOS
3+
* COPYRIGHT: See COPYING.md in the top level directory
4+
* FILE: sdk/xtdk/blfuncs.h
5+
* DESCRIPTION: XT Boot Manager routines
6+
* DEVELOPERS: Rafal Kupiec <[email protected]>
7+
*/
8+
9+
#ifndef __XTDK_BLFUNCS_H
10+
#define __XTDK_BLFUNCS_H
11+
12+
#include <xttypes.h>
13+
#include <xtuefi.h>
14+
15+
16+
/* XT BootLoader routines forward references */
17+
XTCDECL
18+
EFI_STATUS
19+
BlGetXtLdrProtocol(IN PEFI_SYSTEM_TABLE SystemTable,
20+
IN EFI_HANDLE ImageHandle,
21+
OUT PXTBL_LOADER_PROTOCOL *ProtocolHandler);
22+
23+
#endif /* __XTDK_BLFUNCS_H */

sdk/xtdk/bltypes.h

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
/**
2+
* PROJECT: ExectOS
3+
* COPYRIGHT: See COPYING.md in the top level directory
4+
* FILE: sdk/xtdk/bltypes.h
5+
* DESCRIPTION: XT Boot Manager structures definitions
6+
* DEVELOPERS: Rafal Kupiec <[email protected]>
7+
*/
8+
9+
#ifndef __XTDK_BLTYPES_H
10+
#define __XTDK_BLTYPES_H
11+
12+
#include <xttypes.h>
13+
#include <xtuefi.h>
14+
#include <hltypes.h>
15+
16+
17+
/* Architecture specific definitions */
18+
#if defined(__i386__) || defined(__i686__)
19+
#define XTBL_ARCH_LOADER_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR32\\"
20+
#define XTBL_ARCH_MODULES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR32\\MODULES\\"
21+
#define XTBL_ARCH_THEMES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR32\\THEMES\\"
22+
#elif defined(__amd64__) || defined(__x86_64__)
23+
#define XTBL_ARCH_LOADER_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR64\\"
24+
#define XTBL_ARCH_MODULES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR64\\MODULES\\"
25+
#define XTBL_ARCH_THEMES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR64\\THEMES\\"
26+
#else
27+
#error Unknown architecture
28+
#endif
29+
30+
/* XTLDR directories */
31+
#define XTBL_LOADER_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR\\"
32+
#define XTBL_MODULES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR\\MODULES\\"
33+
#define XTBL_THEMES_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR\\THEMES\\"
34+
35+
/* XTLDR module segment macros */
36+
#define XTBL_MODDEPS SEGMENT(".moddeps") CONST WCHAR XtBlpDeps[][8]
37+
#define XTBL_MODINFO SEGMENT(".modinfo") CONST WCHAR XtBlpInfo[]
38+
39+
/* EFI XT boot devices */
40+
#define XTBL_BOOT_DEVICE_UNKNOWN 0x00
41+
#define XTBL_BOOT_DEVICE_CDROM 0x01
42+
#define XTBL_BOOT_DEVICE_FLOPPY 0x02
43+
#define XTBL_BOOT_DEVICE_HARDDISK 0x03
44+
#define XTBL_BOOT_DEVICE_RAMDISK 0x04
45+
46+
/* XTLDR Debug Port type definitions */
47+
#define XTBL_DEBUGPORT_SCREEN 1
48+
#define XTBL_DEBUGPORT_SERIAL 2
49+
50+
/* TUI dialog box attributes */
51+
#define XTBL_TUI_DIALOG_GENERIC_BOX 1
52+
#define XTBL_TUI_DIALOG_ERROR_BOX 2
53+
#define XTBL_TUI_DIALOG_ACTIVE_BUTTON 4
54+
#define XTBL_TUI_DIALOG_INACTIVE_BUTTON 8
55+
#define XTBL_TUI_DIALOG_ACTIVE_INPUT 16
56+
#define XTBL_TUI_DIALOG_INACTIVE_INPUT 32
57+
#define XTBL_TUI_DIALOG_PROGRESS_BAR 64
58+
59+
/* TUI dialog box maximum width */
60+
#define XTBL_TUI_MAX_DIALOG_WIDTH 100
61+
62+
/* Boot Loader protocol routine pointers */
63+
typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory);
64+
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
65+
typedef VOID (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(OUT PXTBL_BOOTMENU_ITEM MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId);
66+
typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters);
67+
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
68+
typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo);
69+
typedef EFI_STATUS (*PBL_CLOSE_XT_PROTOCOL)(IN PEFI_HANDLE Handle, IN PEFI_GUID ProtocolGuid);
70+
typedef PWCHAR (*PBL_CONFIG_GET_VALUE)(IN CONST PWCHAR ConfigName);
71+
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
72+
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
73+
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
74+
typedef VOID (*PBL_CONSOLE_PRINT)(IN PUINT16 Format, IN ...);
75+
typedef VOID (*PBL_CONSOLE_QUERY_MODE)(OUT PUINT_PTR ResX, OUT PUINT_PTR ResY);
76+
typedef VOID (*PBL_CONSOLE_READ_KEY_STROKE)(OUT PEFI_INPUT_KEY Key);
77+
typedef VOID (*PBL_CONSOLE_RESET_INPUT_BUFFER)();
78+
typedef VOID (*PBL_CONSOLE_SET_ATTRIBUTES)(IN ULONGLONG Attributes);
79+
typedef VOID (*PBL_CONSOLE_SET_CURSOR_POSITION)(IN ULONGLONG PosX, IN ULONGLONG PosY);
80+
typedef VOID (*PBL_CONSOLE_WRITE)(IN PUSHORT String);
81+
typedef VOID (*PBL_DEBUG_PRINT)(IN PUINT16 Format, IN ...);
82+
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint);
83+
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_MACHINE_TYPE)(IN PVOID ImagePointer, OUT PUSHORT MachineType);
84+
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_SUBSYSTEM)(IN PVOID ImagePointer, OUT PUSHORT SubSystem);
85+
typedef EFI_STATUS (*PBL_EXECIMAGE_LOAD_IMAGE)(IN PEFI_FILE_HANDLE FileHandle, IN LOADER_MEMORY_TYPE MemoryType, IN PVOID VirtualAddress, OUT PVOID *ImagePointer);
86+
typedef EFI_STATUS (*PBL_EXECIMAGE_RELOCATE_IMAGE)(IN PVOID ImagePointer, IN EFI_VIRTUAL_ADDRESS Address);
87+
typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(IN UINT_PTR MapKey);
88+
typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PWCHAR SystemType, OUT PEFI_GUID BootProtocolGuid);
89+
typedef EFI_STATUS (*PBL_FREE_PAGES)(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory);
90+
typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory);
91+
typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap);
92+
typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)();
93+
typedef INT_PTR (*PBL_GET_SECURE_BOOT_STATUS)();
94+
typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid);
95+
typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PLIST_ENTRY OptionsList);
96+
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
97+
typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
98+
typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize);
99+
typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid);
100+
typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine);
101+
typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds);
102+
typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message);
103+
typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message);
104+
typedef VOID (*PBL_TUI_DISPLAY_INPUT_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN PWCHAR *InputFieldText);
105+
typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN UCHAR Percentage);
106+
typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PWCHAR Message, IN UCHAR Percentage);
107+
typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index);
108+
typedef VOID (*PBL_XT_BOOT_MENU)();
109+
110+
/* Boot parameters structure */
111+
typedef struct _XTBL_BOOT_PARAMETERS
112+
{
113+
PEFI_DEVICE_PATH_PROTOCOL DevicePath;
114+
PWCHAR ArcName;
115+
PWCHAR SystemPath;
116+
PWCHAR SystemType;
117+
PWCHAR KernelFile;
118+
PWCHAR InitrdFile;
119+
PWCHAR HalFile;
120+
PWCHAR Parameters;
121+
} XTBL_BOOT_PARAMETERS, *PXTBL_BOOT_PARAMETERS;
122+
123+
/* Boot menu list structure */
124+
typedef struct _XTBL_BOOTMENU_ITEM
125+
{
126+
PWCHAR EntryName;
127+
PLIST_ENTRY Options;
128+
} XTBL_BOOTMENU_ITEM, *PXTBL_BOOTMENU_ITEM;
129+
130+
/* XTLDR Configuration data */
131+
typedef struct _XTBL_CONFIG_ENTRY
132+
{
133+
LIST_ENTRY Flink;
134+
PWCHAR Name;
135+
PWCHAR Value;
136+
} XTBL_CONFIG_ENTRY, *PXTBL_CONFIG_ENTRY;
137+
138+
/* XTLDR Configuration section */
139+
typedef struct _XTBL_CONFIG_SECTION
140+
{
141+
LIST_ENTRY Flink;
142+
LIST_ENTRY Options;
143+
PWCHAR SectionName;
144+
} XTBL_CONFIG_SECTION, *PXTBL_CONFIG_SECTION;
145+
146+
/* XTLDR Dialog handle data */
147+
typedef struct _XTBL_DIALOG_HANDLE
148+
{
149+
UCHAR Attributes;
150+
UCHAR DialogColor;
151+
UCHAR TextColor;
152+
UINT_PTR ResX;
153+
UINT_PTR ResY;
154+
UINT_PTR PosX;
155+
UINT_PTR PosY;
156+
UINT_PTR Width;
157+
UINT_PTR Height;
158+
} XTBL_DIALOG_HANDLE, *PXTBL_DIALOG_HANDLE;
159+
160+
/* Registered boot protocol structure */
161+
typedef struct _XTBL_KNOWN_BOOT_PROTOCOL
162+
{
163+
LIST_ENTRY Flink;
164+
PWCHAR SystemType;
165+
EFI_GUID Guid;
166+
} XTBL_KNOWN_BOOT_PROTOCOL, *PXTBL_KNOWN_BOOT_PROTOCOL;
167+
168+
/* XTLDR Module dependencies data */
169+
typedef struct _XTBL_MODULE_DEPS
170+
{
171+
LIST_ENTRY Flink;
172+
PWCHAR ModuleName;
173+
} XTBL_MODULE_DEPS, *PXTBL_MODULE_DEPS;
174+
175+
/* XTLDR Module information data */
176+
typedef struct _XTBL_MODULE_INFO
177+
{
178+
LIST_ENTRY Flink;
179+
PWCHAR ModuleName;
180+
PWCHAR ModuleDescription;
181+
LIST_ENTRY Dependencies;
182+
PVOID ModuleBase;
183+
UINT64 ModuleSize;
184+
UINT32 Revision;
185+
PEFI_IMAGE_UNLOAD UnloadModule;
186+
} XTBL_MODULE_INFO, *PXTBL_MODULE_INFO;
187+
188+
/* XTLDR Status data */
189+
typedef struct _XTBL_STATUS
190+
{
191+
PBL_XT_BOOT_MENU BootMenu;
192+
BOOLEAN BootServices;
193+
ULONG DebugPort;
194+
INT_PTR SecureBoot;
195+
CPPORT SerialPort;
196+
} XTBL_STATUS, *PXTBL_STATUS;
197+
198+
/* XTLDR Boot protocol structure */
199+
typedef struct _XTBL_BOOT_PROTOCOL
200+
{
201+
PBL_BOOTPROTO_BOOT_SYSTEM BootSystem;
202+
} XTBL_BOOT_PROTOCOL, *PXTBL_BOOT_PROTOCOL;
203+
204+
/* XTLDR Executable image protocol structure */
205+
typedef struct _XTBL_EXECUTABLE_IMAGE_PROTOCOL
206+
{
207+
PBL_EXECIMAGE_GET_ENTRY_POINT GetEntryPoint;
208+
PBL_EXECIMAGE_GET_MACHINE_TYPE GetMachineType;
209+
// PBL_EXECIMAGE_GET_SECTION GetSection;
210+
PBL_EXECIMAGE_GET_SUBSYSTEM GetSubSystem;
211+
// PBL_EXECIMAGE_GET_VERSION GetVersion;
212+
PBL_EXECIMAGE_LOAD_IMAGE LoadImage;
213+
// PBL_EXECIMAGE_PRINT_INFO PrintDebugInfo;
214+
PBL_EXECIMAGE_RELOCATE_IMAGE RelocateImage;
215+
// PBL_EXECUTABLE_VERIFY_IMAGE VerifyImage;
216+
} XTBL_EXECUTABLE_IMAGE_PROTOCOL, *PXTBL_EXECUTABLE_IMAGE_PROTOCOL;
217+
218+
/* XTLDR Loader protocol */
219+
typedef struct _XTBL_LOADER_PROTOCOL
220+
{
221+
struct
222+
{
223+
PBL_FIND_BOOT_PROTOCOL FindProtocol;
224+
PBL_BOOTMENU_INITIALIZE_OS_LIST InitializeMenuList;
225+
PBL_INVOKE_BOOT_PROTOCOL InvokeProtocol;
226+
PBL_REGISTER_XT_BOOT_MENU RegisterMenu;
227+
PBL_REGISTER_BOOT_PROTOCOL RegisterProtocol;
228+
} Boot;
229+
struct
230+
{
231+
PBL_CONFIG_GET_VALUE GetValue;
232+
} Config;
233+
struct
234+
{
235+
PBL_CLEAR_CONSOLE_LINE ClearLine;
236+
PBL_CONSOLE_CLEAR_SCREEN ClearScreen;
237+
PBL_CONSOLE_DISABLE_CURSOR DisableCursor;
238+
PBL_CONSOLE_ENABLE_CURSOR EnableCursor;
239+
PBL_CONSOLE_PRINT Print;
240+
PBL_CONSOLE_QUERY_MODE QueryMode;
241+
PBL_CONSOLE_READ_KEY_STROKE ReadKeyStroke;
242+
PBL_CONSOLE_RESET_INPUT_BUFFER ResetInputBuffer;
243+
PBL_CONSOLE_SET_ATTRIBUTES SetAttributes;
244+
PBL_CONSOLE_SET_CURSOR_POSITION SetCursorPosition;
245+
PBL_CONSOLE_WRITE Write;
246+
} Console;
247+
struct
248+
{
249+
PBL_DEBUG_PRINT Print;
250+
} Debug;
251+
struct
252+
{
253+
PBL_CLOSE_VOLUME CloseVolume;
254+
PBL_OPEN_VOLUME OpenVolume;
255+
PBL_READ_FILE ReadFile;
256+
} Disk;
257+
struct
258+
{
259+
PBL_ALLOCATE_PAGES AllocatePages;
260+
PBL_ALLOCATE_POOL AllocatePool;
261+
PBL_FREE_PAGES FreePages;
262+
PBL_FREE_POOL FreePool;
263+
PBL_GET_MEMORY_MAP GetMemoryMap;
264+
} Memory;
265+
struct
266+
{
267+
PBL_CLOSE_XT_PROTOCOL Close;
268+
PBL_GET_MODULES_LIST GetModulesList;
269+
PBL_INSTALL_XT_PROTOCOL Install;
270+
PBL_OPEN_XT_PROTOCOL Open;
271+
} Protocol;
272+
struct
273+
{
274+
PBL_TUI_DISPLAY_ERROR_DIALOG DisplayErrorDialog;
275+
PBL_TUI_DISPLAY_INFO_DIALOG DisplayInfoDialog;
276+
PBL_TUI_DISPLAY_INPUT_DIALOG DisplayInputDialog;
277+
PBL_TUI_DISPLAY_PROGRESS_DIALOG DisplayProgressDialog;
278+
PBL_TUI_UPDATE_PROGRESS_BAR UpdateProgressBar;
279+
} Tui;
280+
struct
281+
{
282+
PBL_EXIT_BOOT_SERVICES ExitBootServices;
283+
PBL_GET_SECURE_BOOT_STATUS GetSecureBootStatus;
284+
PBL_SLEEP_EXECUTION SleepExecution;
285+
PBL_WAIT_FOR_EFI_EVENT WaitForEfiEvent;
286+
} Util;
287+
} XTBL_LOADER_PROTOCOL, *PXTBL_LOADER_PROTOCOL;
288+
289+
#endif /* __XTDK_BLTYPES_H */

0 commit comments

Comments
 (0)