29 lines
687 B
C
Raw Normal View History

2022-09-05 16:13:51 +02:00
#pragma once
#include "memory/Paging.h"
namespace Paging
{
2022-09-22 07:57:30 +02:00
enum Flags
{
ReadWrite = 1 << 0,
User = 1 << 1,
2022-09-23 16:41:43 +02:00
Execute = 1 << 2
2022-09-22 07:57:30 +02:00
};
2022-09-05 16:13:51 +02:00
class VirtualMemoryManager
{
2022-09-06 13:49:17 +02:00
public:
void init(); // fetch page table from cr3
void init(PageTable* PML4);
2022-09-05 16:13:51 +02:00
2022-09-22 07:57:30 +02:00
void map(uint64_t virtualAddress, uint64_t physicalAddress, int flags);
void remap(uint64_t virtualAddress, int flags);
2022-09-06 13:49:17 +02:00
void unmap(uint64_t virtualAddress);
uint64_t getPhysical(uint64_t virtualAddress);
uint64_t getFlags(uint64_t virtualAddress);
2022-09-05 16:13:51 +02:00
private:
PageTable* PML4;
};
2022-09-06 13:49:17 +02:00
}
extern Paging::VirtualMemoryManager kernelVMM;