Simple physical memory allocator, virtual memory manager

This commit is contained in:
2020-07-09 18:50:13 -05:00
parent d3ba3c1d2a
commit 52c3754305
25 changed files with 795 additions and 316 deletions

61
src/memorymap.hpp Normal file
View File

@@ -0,0 +1,61 @@
#ifndef MEMORYMAP_H
#define MEMORYMAP_H
#include <stdint.h>
#include <stddef.h>
#include "systypes.hpp"
namespace qkernel
{
class MemoryMap
{
public:
enum Type
{
AVAILABLE = 1,
ACPI = 3,
DEFECTIVE = 5
};
class Region
{
public:
physaddr_t getLocation();
size_t getSize();
Type getType();
bool contains(physaddr_t location, size_t size);
private:
physaddr_t location;
size_t size;
uint32_t type;
};
MemoryMap(Region* map, size_t entries);
Region& operator[](size_t index);
size_t size();
private:
Region* map;
size_t entries;
};
}
#endif