Rearrange memory manager into two classes.

page_manager and memory_manager are now separate, and are also pre
allocated in the kernel so they don't have to allocate themselves.
This commit is contained in:
Justin C. Miller
2018-04-21 17:34:33 -07:00
parent 4a38a74b16
commit 57abb03deb
6 changed files with 68 additions and 30 deletions

View File

@@ -1,21 +1,23 @@
#pragma once
/// \file memory.h
/// The block memory manager and related definitions.
#include <stddef.h>
struct page_block;
/// Manager for allocation of virtual memory.
class memory_manager
{
public:
memory_manager();
static void create(const void *memory_map, size_t map_length, size_t desc_length);
static memory_manager * get() { return s_instance; }
private:
memory_manager(page_block *free, page_block *used, void *scratch, size_t scratch_len);
memory_manager() = delete;
memory_manager(const memory_manager &) = delete;
static memory_manager * s_instance;
private:
friend class page_manager;
};
extern memory_manager g_memory_manager;
/// Bootstrap the memory managers.
void memory_initialize_managers(const void *memory_map, size_t map_length, size_t desc_length);