Add MemoryManager class

This will be the top-level class for the memory manager subsystem.
Copy in some code from kmain()
This commit is contained in:
Eryn Wells 2016-03-25 01:21:37 -04:00
parent ddb4c30c62
commit b9ece9bbcb
3 changed files with 68 additions and 0 deletions

37
src/Memory.cc Normal file
View file

@ -0,0 +1,37 @@
/* Memory.cc
* vim: set tw=80:
* Eryn Wells <eryn@erynwells.me>
*/
/**
* Top-level classes for managing system memory.
*/
#include "Memory.hh"
namespace kernel {
/*
* Public
*/
void
MemoryManager::initialize(Console& console)
{
initializeGDT();
console.printString("GDT loaded\n");
}
/*
* Private
*/
void
MemoryManager::initializeGDT()
{
mGDT.setNullDescriptor(0);
mGDT.setDescriptor(1, x86::GDT::DescriptorSpec::kernelSegment(0, 0xFFFFFFFF, x86::GDT::Type::CodeEXR));
mGDT.setDescriptor(2, x86::GDT::DescriptorSpec::kernelSegment(0, 0xFFFFFFFF, x86::GDT::Type::DataRW));
mGDT.load();
}
} /* namespace kernel */

30
src/Memory.hh Normal file
View file

@ -0,0 +1,30 @@
/* Memory.hh
* vim: set tw=80:
* Eryn Wells <eryn@erynwells.me>
*/
/**
* Declaration of top-level classes for managing system memory.
*/
#ifndef __MEMORY_HH__
#define __MEMORY_HH__
#include "Console.hh"
#include "Descriptors.hh"
namespace kernel {
struct MemoryManager
{
void initialize(Console& console);
private:
x86::GDT mGDT;
void initializeGDT();
};
} /* namespace kernel */
#endif /* __MEMORY_HH__ */

View file

@ -15,6 +15,7 @@ files = [
'Descriptors.cc',
'Interrupts.cc',
'Kernel.cc',
'Memory.cc',
'Multiboot.cc',
'PIC.cc',
'cxa.cc',