/* * @author xamidev * @brief Virtual memory manager * @license GPL-3.0-only */ #ifndef VMM_H #define VMM_H #include #include #include struct vmm_context { uint64_t* pml4; }; void vmm_init(void); void* vmm_alloc_region(uint64_t* pml4, size_t pages, uint64_t flags); bool vmm_is_mapped(uint64_t* pml4, uint64_t virt); void vmm_unmap(uint64_t* pml4, uint64_t virt); void* vmm_map(uint64_t* pml4, uint64_t virt, uint64_t flags); uint64_t* vmm_create_address_space(); uint64_t vmm_virt_to_phys(uint64_t* pml4, uint64_t virt); #define VMM_USER_SPACE_START 0x0000000000001000 #define VMM_USER_SPACE_END 0x00007FFFFFFFF000 #endif