Files
2026-05-24 19:36:50 +08:00

26 lines
525 B
C

#pragma once
#include <efi.h>
#define PAGE_SIZE 4096
#define PAGE_SHIFT 12
#define PAGE_MASK (~(PAGE_SIZE - 1ULL))
typedef struct {
UINT8* bitmap;
UINTN bitmap_size;
UINTN total_pages;
UINTN free_pages;
void* free_list_head;
UINT64 base_addr;
UINT64 max_addr;
} pmm_t;
extern pmm_t g_pmm;
EFI_STATUS pmm_init();
void* pmm_alloc_pages(UINTN n);
void pmm_free_pages(void* addr, UINTN n);
UINTN pmm_get_free_count();
BOOLEAN pmm_is_page_free(void* addr);