#pragma once
#include "memory/Paging.h"

namespace Paging
{
    class VirtualMemoryManager
    {
      public:
        void init(); // fetch page table from cr3
        void init(PageTable* PML4);

        void map(uint64_t virtualAddress, uint64_t physicalAddress);
        void unmap(uint64_t virtualAddress);
        uint64_t getPhysical(uint64_t virtualAddress);

      private:
        PageTable* PML4;
    };
}

extern Paging::VirtualMemoryManager kernelVMM;