From e8564c755b813537b816bc767100bc7022afba72 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sun, 13 Sep 2020 16:11:24 -0700 Subject: [PATCH] [kernel] Move vm_space into kernel The vm_space code should not have been in kutil, moving it to kernel. --- modules.yaml | 2 +- src/kernel/buffer_cache.cpp | 4 ++-- src/kernel/main.cpp | 1 - src/kernel/memory_bootstrap.cpp | 6 +++--- src/kernel/page_manager.cpp | 6 +++--- src/{libraries/kutil => kernel}/vm_space.cpp | 8 ++------ src/{libraries/kutil/include/kutil => kernel}/vm_space.h | 6 +----- 7 files changed, 12 insertions(+), 21 deletions(-) rename src/{libraries/kutil => kernel}/vm_space.cpp (98%) rename src/{libraries/kutil/include/kutil => kernel}/vm_space.h (97%) diff --git a/modules.yaml b/modules.yaml index ae92e78..b9f2ed1 100644 --- a/modules.yaml +++ b/modules.yaml @@ -58,6 +58,7 @@ modules: - src/kernel/syscalls/system.cpp - src/kernel/syscalls/thread.cpp - src/kernel/task.s + - src/kernel/vm_space.cpp - src/kernel/crtn.s boot: @@ -117,7 +118,6 @@ modules: - src/libraries/kutil/logger.cpp - src/libraries/kutil/memory.cpp - src/libraries/kutil/printf.c - - src/libraries/kutil/vm_space.cpp libc: diff --git a/src/kernel/buffer_cache.cpp b/src/kernel/buffer_cache.cpp index 9951c2b..e5ba2bf 100644 --- a/src/kernel/buffer_cache.cpp +++ b/src/kernel/buffer_cache.cpp @@ -1,10 +1,10 @@ #include "kutil/assert.h" -#include "kutil/vm_space.h" #include "kernel_memory.h" #include "page_manager.h" #include "buffer_cache.h" +#include "vm_space.h" -extern kutil::vm_space g_kernel_space; +extern vm_space g_kernel_space; using memory::frame_size; using memory::kernel_stack_pages; diff --git a/src/kernel/main.cpp b/src/kernel/main.cpp index 177b390..d29759d 100644 --- a/src/kernel/main.cpp +++ b/src/kernel/main.cpp @@ -5,7 +5,6 @@ #include "initrd/initrd.h" #include "kutil/assert.h" -#include "kutil/vm_space.h" #include "apic.h" #include "block_device.h" #include "console.h" diff --git a/src/kernel/memory_bootstrap.cpp b/src/kernel/memory_bootstrap.cpp index 58fc39b..f69143e 100644 --- a/src/kernel/memory_bootstrap.cpp +++ b/src/kernel/memory_bootstrap.cpp @@ -5,12 +5,12 @@ #include "kutil/assert.h" #include "kutil/heap_allocator.h" #include "kutil/no_construct.h" -#include "kutil/vm_space.h" #include "frame_allocator.h" #include "io.h" #include "log.h" #include "page_manager.h" +#include "vm_space.h" using memory::frame_size; using memory::heap_start; @@ -24,7 +24,7 @@ using memory::table_entries; using namespace kernel; -kutil::vm_space g_kernel_space {kernel_offset, (heap_start-kernel_offset)}; +vm_space g_kernel_space {kernel_offset, (heap_start-kernel_offset)}; // These objects are initialized _before_ global constructors are called, @@ -54,7 +54,7 @@ void walk_page_table( page_table::level level, uintptr_t ¤t_start, size_t ¤t_bytes, - kutil::vm_space &kspace) + vm_space &kspace) { constexpr size_t huge_page_size = (1ull<<30); constexpr size_t large_page_size = (1ull<<21); diff --git a/src/kernel/page_manager.cpp b/src/kernel/page_manager.cpp index 4ea27d8..e29d8de 100644 --- a/src/kernel/page_manager.cpp +++ b/src/kernel/page_manager.cpp @@ -1,9 +1,9 @@ #include "kutil/assert.h" -#include "kutil/vm_space.h" #include "console.h" #include "io.h" #include "log.h" #include "page_manager.h" +#include "vm_space.h" using memory::frame_size; using memory::heap_start; @@ -333,12 +333,12 @@ page_manager::fault_handler(uintptr_t addr) if (!addr) return false; - extern kutil::vm_space g_kernel_space; + extern vm_space g_kernel_space; bool is_heap = addr >= ::memory::heap_start && addr < ::memory::heap_start + ::memory::kernel_max_heap; if (!is_heap && - g_kernel_space.get(addr) != kutil::vm_state::committed) + g_kernel_space.get(addr) != vm_state::committed) return false; uintptr_t page = addr & ~0xfffull; diff --git a/src/libraries/kutil/vm_space.cpp b/src/kernel/vm_space.cpp similarity index 98% rename from src/libraries/kutil/vm_space.cpp rename to src/kernel/vm_space.cpp index 47c8b5b..9a3d0f7 100644 --- a/src/libraries/kutil/vm_space.cpp +++ b/src/kernel/vm_space.cpp @@ -1,9 +1,7 @@ #include -#include "kutil/logger.h" #include "kutil/vector.h" -#include "kutil/vm_space.h" - -namespace kutil { +#include "log.h" +#include "vm_space.h" using node_type = kutil::avl_node; using node_vec = kutil::vector; @@ -256,5 +254,3 @@ vm_space::get(uintptr_t addr) node_type *node = find_overlapping(m_ranges.root(), addr, 1); return node ? node->state : vm_state::unknown; } - -} // namespace kutil diff --git a/src/libraries/kutil/include/kutil/vm_space.h b/src/kernel/vm_space.h similarity index 97% rename from src/libraries/kutil/include/kutil/vm_space.h rename to src/kernel/vm_space.h index 48e7442..e091f75 100644 --- a/src/libraries/kutil/include/kutil/vm_space.h +++ b/src/kernel/vm_space.h @@ -5,14 +5,11 @@ #include #include "kutil/avl_tree.h" -namespace kutil { - enum class vm_state : uint8_t { unknown, none, reserved, - committed, - mapped + committed }; struct vm_range @@ -74,4 +71,3 @@ private: tree_type m_ranges; }; -} // namespace kutil