Add temporary solution for mapping modules code
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Successful in 28s

This commit is contained in:
Rafal Kupiec 2024-01-04 22:42:27 +01:00
parent ed8b93beb0
commit d7abe40e5d
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
3 changed files with 25 additions and 1 deletions

View File

@ -74,6 +74,7 @@ typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PWCHAR SystemType, OUT PEFI_GUID
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_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap);
typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)();
typedef INT_PTR (*PBL_GET_SECURE_BOOT_STATUS)();
typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PLIST_ENTRY OptionsList);
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
@ -244,6 +245,7 @@ typedef struct _XTBL_LOADER_PROTOCOL
} Memory;
struct
{
PBL_GET_MODULES_LIST GetModulesList;
PBL_OPEN_XT_PROTOCOL Open;
PBL_REGISTER_XT_PROTOCOL Register;
} Protocol;

View File

@ -106,6 +106,10 @@ XTCDECL
EFI_STATUS
BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap);
XTCDECL
PLIST_ENTRY
BlGetModulesList();
XTCDECL
INT_PTR
BlGetSecureBootStatus();

View File

@ -52,6 +52,23 @@ BlFindBootProtocol(IN PWCHAR SystemType,
return STATUS_EFI_NOT_FOUND;
}
/**
* Returns a linked list of all loaded modules.
*
* @return This routine returns a pointer to a linked list of all loaded modules.
*
* @since XT 1.0
*
* @todo This is a temporary solution and it should be replaced by a complex API allowing to map modules.
*/
XTCDECL
PLIST_ENTRY
BlGetModulesList()
{
/* Return a pointer to a list of all loaded modules */
return &BlpLoadedModules;
}
/**
* Loads a specified XTLDR module from disk.
*
@ -404,7 +421,7 @@ BlOpenProtocol(OUT PVOID *ProtocolHandler,
*/
XTCDECL
VOID
BlRegisterBootMenu(PVOID BootMenuRoutine)
BlRegisterBootMenu(IN PVOID BootMenuRoutine)
{
/* Set boot menu routine */
BlpStatus.BootMenu = BootMenuRoutine;
@ -529,6 +546,7 @@ BlpRegisterXtLoaderProtocol()
BlpLdrProtocol.Memory.FreePages = BlMemoryFreePages;
BlpLdrProtocol.Memory.FreePool = BlMemoryFreePool;
BlpLdrProtocol.Memory.GetMemoryMap = BlGetMemoryMap;
BlpLdrProtocol.Protocol.GetModulesList = BlGetModulesList;
BlpLdrProtocol.Protocol.Open = BlOpenProtocol;
BlpLdrProtocol.Protocol.Register = BlRegisterProtocol;
BlpLdrProtocol.Tui.DisplayErrorDialog = BlDisplayErrorDialog;