Page
struct page { uint8_t is_free; uint8_t order; struct page *next;};struct page referenced types:
struct page_table { pte_t entries[512];};struct page_table referenced types:
bool page_pfn_free(uint64_t pfn);struct page page_for_pfn(uint64_t pfn);page_for_pfn referenced types:
uint64_t page_get_pfn(struct page *bp);page_get_pfn referenced types:
Defines
Section titled “Defines”#define PAGE_SIZE 4096ULL#define PAGE_2MB 0x200000#define PAGING_PRESENT (0x1UL)#define PAGING_WRITE (0x2UL)#define PAGING_USER_ALLOWED (0x4UL)#define PAGING_ALL 0xFFFUL#define PAGING_XD (1UL << 63) // E(x)ecute (D)isable#define PAGING_PHYS_MASK (0x00FFFFFFF000UL)#define PAGING_PAGE_SIZE (1UL << 7)#define PAGING_UNCACHABLE ((1UL << 4) | PAGING_WRITE)#define PAGING_NO_FLAGS (0)#define PAGING_WRITETHROUGH (1UL << 3)#define PAGING_2MB_page (1ULL << 7)#define PAGING_PAGEABLE (0)#define PAGING_MOVABLE (0)#define PAGING_2MB_PHYS_MASK (~((uintptr_t) PAGE_2MB - 1))#define PAGE_ALIGN_DOWN(x) ALIGN_DOWN((uintptr_t) (x), PAGE_SIZE)#define PAGE_ALIGN_UP(x) ALIGN_UP((uintptr_t) (x), PAGE_SIZE)#define PAGE_TO_PFN(addr) ((addr) / PAGE_SIZE)#define PFN_TO_PAGE(pfn) ((pfn) * PAGE_SIZE)#define PAGES_NEEDED_FOR(bytes) (((bytes) + PAGE_SIZE - 1ULL) / PAGE_SIZE)#define VMM_MAP_BASE 0xFFFFA00000200000#define VMM_MAP_LIMIT 0xFFFFA00010000000