#pragma once #include "memory/Paging.h" namespace Paging { enum Flags { ReadWrite = 1 << 0, User = 1 << 1, Execute = 1 << 2 }; class VirtualMemoryManager { public: void init(); // fetch page table from cr3 void init(PageTable* cr3); void map(uint64_t virtualAddress, uint64_t physicalAddress, int flags); void remap(uint64_t virtualAddress, int flags); void unmap(uint64_t virtualAddress); uint64_t getPhysical(uint64_t virtualAddress); uint64_t getFlags(uint64_t virtualAddress); private: PageTable* PML4; }; } extern Paging::VirtualMemoryManager kernelVMM;