Redesign a way of storing module information; this allows to store more data in a single section, like license or a list of authors, as well as solves the problem with different module name lengths

This commit is contained in:
2024-02-28 23:28:33 +01:00
parent 4b34f7db4b
commit 17c50ea912
12 changed files with 354 additions and 55 deletions

View File

@@ -12,9 +12,17 @@
#include <xttypes.h>
/* Boot Loader module segment macros */
#define XTBL_MODDEPS SEGMENT(".moddeps") CONST WCHAR XtBlpDeps[][9]
#define XTBL_MODINFO SEGMENT(".modinfo") CONST WCHAR XtBlpInfo[]
/* Boot Loader module information macros */
#define MODULE_AUTHOR(_author) XTBL_MODULE_INFO(author, author, _author)
#define MODULE_DEPENDENCY(_softdeps) XTBL_MODULE_INFO(softdeps, softdeps, _softdeps)
#define MODULE_DESCRIPTION(_description) XTBL_MODULE_INFO(description, description, _description)
#define MODULE_LICENSE(_license) XTBL_MODULE_INFO(license, license, _license)
#define MODULE_VERSION(_version) XTBL_MODULE_INFO(version, version, _version)
/* Boot Loader module information segment macro */
#define XTBL_MODULE_INFO(Tag, Name, Data) STATIC CONST WCHAR UNIQUE(Name)[] \
USED SEGMENT(".modinfo") ALIGN(1) \
= STRINGIFY(Tag) "=" Data
/* XTLDR directories */
#define XTBL_LOADER_DIRECTORY_PATH L"\\EFI\\BOOT\\XTLDR\\"

View File

@@ -190,6 +190,13 @@ typedef struct _XTBL_MEMORY_MAPPING
LOADER_MEMORY_TYPE MemoryType;
} XTBL_MEMORY_MAPPING, *PXTBL_MEMORY_MAPPING;
/* XTLDR Module dependencies data */
typedef struct _XTBL_MODULE_AUTHORS
{
LIST_ENTRY Flink;
PWCHAR AuthorName;
} XTBL_MODULE_AUTHORS, *PXTBL_MODULE_AUTHORS;
/* XTLDR Module dependencies data */
typedef struct _XTBL_MODULE_DEPS
{
@@ -203,6 +210,9 @@ typedef struct _XTBL_MODULE_INFO
LIST_ENTRY Flink;
PWCHAR ModuleName;
PWCHAR ModuleDescription;
PWCHAR License;
PWCHAR Version;
LIST_ENTRY Authors;
LIST_ENTRY Dependencies;
PVOID ModuleBase;
ULONGLONG ModuleSize;

View File

@@ -282,6 +282,7 @@ typedef struct _XTBL_FRAMEBUFFER_PROTOCOL XTBL_FRAMEBUFFER_PROTOCOL, *PXTBL_FRAM
typedef struct _XTBL_KNOWN_BOOT_PROTOCOL XTBL_KNOWN_BOOT_PROTOCOL, *PXTBL_KNOWN_BOOT_PROTOCOL;
typedef struct _XTBL_LOADER_PROTOCOL XTBL_LOADER_PROTOCOL, *PXTBL_LOADER_PROTOCOL;
typedef struct _XTBL_MEMORY_MAPPING XTBL_MEMORY_MAPPING, *PXTBL_MEMORY_MAPPING;
typedef struct _XTBL_MODULE_AUTHORS XTBL_MODULE_AUTHORS, *PXTBL_MODULE_AUTHORS;
typedef struct _XTBL_MODULE_DEPS XTBL_MODULE_DEPS, *PXTBL_MODULE_DEPS;
typedef struct _XTBL_MODULE_INFO XTBL_MODULE_INFO, *PXTBL_MODULE_INFO;
typedef struct _XTBL_PAGE_MAPPING XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING;