diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index bd31b8e..dbfab46 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -51,12 +51,14 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/ke/spinlock.cc ${XTOSKRNL_SOURCE_DIR}/ke/sysres.cc ${XTOSKRNL_SOURCE_DIR}/ke/timer.cc + ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/alloc.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/mmgr.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pagemap.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/paging.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pfault.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pfn.cc ${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pte.cc + ${XTOSKRNL_SOURCE_DIR}/mm/alloc.cc ${XTOSKRNL_SOURCE_DIR}/mm/colors.cc ${XTOSKRNL_SOURCE_DIR}/mm/data.cc ${XTOSKRNL_SOURCE_DIR}/mm/hlpool.cc diff --git a/xtoskrnl/includes/mm.hh b/xtoskrnl/includes/mm.hh index 5c2e568..6045afe 100644 --- a/xtoskrnl/includes/mm.hh +++ b/xtoskrnl/includes/mm.hh @@ -15,6 +15,7 @@ #include XTOS_ARCH_HEADER(mm, paging.hh) #include XTOS_ARCH_HEADER(mm, pte.hh) +#include #include #include #include diff --git a/xtoskrnl/includes/mm/alloc.hh b/xtoskrnl/includes/mm/alloc.hh new file mode 100644 index 0000000..dc88bea --- /dev/null +++ b/xtoskrnl/includes/mm/alloc.hh @@ -0,0 +1,25 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/mm/alloc.hh + * DESCRIPTION: Memory manager pool allocation + * DEVELOPERS: Aiken Harris + */ + +#ifndef __XTOSKRNL_MM_ALLOC_HH +#define __XTOSKRNL_MM_ALLOC_HH + +#include + + +/* Memory Manager */ +namespace MM +{ + class Allocator + { + public: + STATIC XTAPI VOID InitializeNonPagedPool(VOID); + }; +} + +#endif /* __XTOSKRNL_MM_ALLOC_HH */ diff --git a/xtoskrnl/mm/alloc.cc b/xtoskrnl/mm/alloc.cc new file mode 100644 index 0000000..306b3fb --- /dev/null +++ b/xtoskrnl/mm/alloc.cc @@ -0,0 +1,11 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/mm/alloc.cc + * DESCRIPTION: Memory manager pool allocation + * DEVELOPERS: Aiken Harris + */ + +#include + + diff --git a/xtoskrnl/mm/amd64/alloc.cc b/xtoskrnl/mm/amd64/alloc.cc new file mode 100644 index 0000000..8cdfab0 --- /dev/null +++ b/xtoskrnl/mm/amd64/alloc.cc @@ -0,0 +1,29 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/mm/amd64/alloc.cc + * DESCRIPTION: Memory manager pool allocation + * DEVELOPERS: Aiken Harris + */ + +#include + + +XTAPI +VOID +MM::Allocator::InitializeNonPagedPool(VOID) +{ + PMMMEMORY_LAYOUT MemoryLayout; + + UNIMPLEMENTED; + + /* Retrieve memory layout */ + MemoryLayout = MM::Manager::GetMemoryLayout(); + + /* Map PPE and PDE for whole non-paged pool */ + MM::Pte::MapPPE(MemoryLayout->NonPagedPoolStart, MemoryLayout->NonPagedExpansionPoolEnd, MM::Pte::GetValidPte()); + MM::Pte::MapPDE(MemoryLayout->NonPagedPoolStart, MemoryLayout->NonPagedExpansionPoolEnd, MM::Pte::GetValidPte()); + + /* Map PTE only for the base of the non-paged pool */ + MM::Pte::MapPTE(MemoryLayout->NonPagedPoolStart, (PCHAR)MemoryLayout->NonPagedPoolEnd - 1, MM::Pte::GetValidPte()); +} diff --git a/xtoskrnl/mm/i686/alloc.cc b/xtoskrnl/mm/i686/alloc.cc new file mode 100644 index 0000000..0987553 --- /dev/null +++ b/xtoskrnl/mm/i686/alloc.cc @@ -0,0 +1,17 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/mm/i686/alloc.cc + * DESCRIPTION: Memory manager pool allocation + * DEVELOPERS: Aiken Harris + */ + +#include + + +XTAPI +VOID +MM::Allocator::InitializeNonPagedPool(VOID) +{ + UNIMPLEMENTED; +}