lib: launch: move page size from a global variable to elf_image

This commit is contained in:
2026-02-21 23:23:23 +00:00
parent 7a51a56909
commit 2c41f1a77a
2 changed files with 4 additions and 12 deletions

View File

@@ -21,8 +21,8 @@
/* TODO in case we ever support ELF32 images */
#define elf_class_bits(x) (64)
#define PAGE_SIZE (page_size())
#define PAGE_MASK (page_size() - 1)
#define PAGE_SIZE (image->e_page_size)
#define PAGE_MASK (image->e_page_size - 1)
#define PAGE_OFFSET(v) ((v) & (PAGE_SIZE - 1))
#define PAGE_ALIGN_DOWN(v) (v) &= ~(PAGE_SIZE - 1)
#define PAGE_ALIGN_UP(v) \
@@ -35,16 +35,6 @@
#undef DEBUG_LOG
static size_t page_size(void)
{
static size_t pagesz = 0;
if (pagesz == 0) {
kern_config_get(KERN_CFG_PAGE_SIZE, &pagesz, sizeof pagesz);
}
return pagesz;
}
static enum launch_status elf_validate_ehdr(elf_ehdr_t *hdr)
{
if (hdr->e_ident[EI_MAG0] != ELF_MAG0) {
@@ -488,6 +478,7 @@ void elf_image_init(struct elf_image *out)
{
memset(out, 0x0, sizeof(*out));
kern_config_get(KERN_CFG_PAGE_SIZE, &out->e_page_size, sizeof out->e_page_size);
out->e_image = KERN_HANDLE_INVALID;
out->e_data = KERN_HANDLE_INVALID;
out->e_local_space = KERN_HANDLE_INVALID;

View File

@@ -289,6 +289,7 @@ struct bootdata;
struct bootfs_file;
struct elf_image {
size_t e_page_size;
kern_handle_t e_image, e_data;
kern_handle_t e_local_space, e_remote_space;
kern_handle_t e_local_exec, e_remote_exec;