diff options
| -rw-r--r-- | kernel/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | kernel/include/kernel/memory/block_list_allocator.hpp (renamed from kernel/include/kernel/memory/free_list_allocator.hpp) | 18 | ||||
| -rw-r--r-- | kernel/src/memory.cpp | 4 | ||||
| -rw-r--r-- | kernel/src/memory/block_list_allocator.cpp (renamed from kernel/src/memory/free_list_allocator.cpp) | 24 |
4 files changed, 24 insertions, 24 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 566ab9e..02e517c 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -11,7 +11,7 @@ add_executable("kernel" # Kernel Implementation "src/main.cpp" "src/memory/bitmap_allocator.cpp" - "src/memory/free_list_allocator.cpp" + "src/memory/block_list_allocator.cpp" "src/memory/operators.cpp" "src/memory.cpp" ) diff --git a/kernel/include/kernel/memory/free_list_allocator.hpp b/kernel/include/kernel/memory/block_list_allocator.hpp index 53a7b61..977ce89 100644 --- a/kernel/include/kernel/memory/free_list_allocator.hpp +++ b/kernel/include/kernel/memory/block_list_allocator.hpp @@ -1,5 +1,5 @@ -#ifndef TEACHOS_KERNEL_MEMORY_FREE_LIST_ALLOCATOR_HPP -#define TEACHOS_KERNEL_MEMORY_FREE_LIST_ALLOCATOR_HPP +#ifndef TEACHOS_KERNEL_MEMORY_BLOCK_LIST_ALLOCATOR_HPP +#define TEACHOS_KERNEL_MEMORY_BLOCK_LIST_ALLOCATOR_HPP #include "kapi/memory.hpp" @@ -17,15 +17,15 @@ namespace kernel::memory //! //! This allocator is designed to perform first-fit allocation using an intrusive doubly-linked list. The heap is //! expanded as needed. - struct free_list_allocator final : heap_allocator + struct block_list_allocator final : heap_allocator { //! Construct a new free list allocator with the given base address. - explicit free_list_allocator(kapi::memory::linear_address base) noexcept; + explicit block_list_allocator(kapi::memory::linear_address base) noexcept; - free_list_allocator(free_list_allocator const &) = delete; - free_list_allocator(free_list_allocator &&) = delete; - auto operator=(free_list_allocator const &) -> free_list_allocator & = delete; - auto operator=(free_list_allocator &&) -> free_list_allocator & = delete; + block_list_allocator(block_list_allocator const &) = delete; + block_list_allocator(block_list_allocator &&) = delete; + auto operator=(block_list_allocator const &) -> block_list_allocator & = delete; + auto operator=(block_list_allocator &&) -> block_list_allocator & = delete; //! Allocate a block of memory with the given alignment. //! @@ -70,7 +70,7 @@ namespace kernel::memory kapi::memory::linear_address m_base; kapi::memory::linear_address m_frontier; - block_header * m_free_list; + block_header * m_block_list; kstd::mutex m_lock; }; diff --git a/kernel/src/memory.cpp b/kernel/src/memory.cpp index 14bedf1..3bc86f3 100644 --- a/kernel/src/memory.cpp +++ b/kernel/src/memory.cpp @@ -3,7 +3,7 @@ #include "kapi/memory.hpp" #include "kapi/system.hpp" -#include "kernel/memory/free_list_allocator.hpp" +#include "kernel/memory/block_list_allocator.hpp" #include "kernel/memory/heap_allocator.hpp" #include <atomic> @@ -31,7 +31,7 @@ namespace kernel::memory constinit null_allocator null_allocator::instance{}; auto constinit active_heap_allocator = std::optional<heap_allocator *>{&null_allocator::instance}; - auto constinit basic_allocator = std::optional<free_list_allocator>{}; + auto constinit basic_allocator = std::optional<block_list_allocator>{}; } // namespace auto get_heap_allocator() -> heap_allocator & diff --git a/kernel/src/memory/free_list_allocator.cpp b/kernel/src/memory/block_list_allocator.cpp index 66b6bdb..cc91304 100644 --- a/kernel/src/memory/free_list_allocator.cpp +++ b/kernel/src/memory/block_list_allocator.cpp @@ -1,4 +1,4 @@ -#include "kernel/memory/free_list_allocator.hpp" +#include "kernel/memory/block_list_allocator.hpp" #include "kapi/memory.hpp" #include "kapi/system.hpp" @@ -25,15 +25,15 @@ namespace kernel::memory } } // namespace - free_list_allocator::free_list_allocator(kapi::memory::linear_address base) noexcept + block_list_allocator::block_list_allocator(kapi::memory::linear_address base) noexcept : heap_allocator{} , m_base{base} , m_frontier{base} - , m_free_list{} + , m_block_list{} , m_lock{} {} - auto free_list_allocator::allocate(std::size_t size, std::align_val_t alignment) noexcept -> void * + auto block_list_allocator::allocate(std::size_t size, std::align_val_t alignment) noexcept -> void * { kstd::lock_guard guard{m_lock}; @@ -42,7 +42,7 @@ namespace kernel::memory for (auto attempt = 0uz; attempt < 2uz; ++attempt) { - auto current = m_free_list; + auto current = m_block_list; while (current != nullptr) { if (current->free && current->size >= search_size) @@ -71,7 +71,7 @@ namespace kernel::memory return nullptr; } - auto free_list_allocator::deallocate(void * ptr) noexcept -> void + auto block_list_allocator::deallocate(void * ptr) noexcept -> void { if (!ptr) { @@ -88,7 +88,7 @@ namespace kernel::memory coalesce(block); } - auto free_list_allocator::expand(std::size_t size) noexcept -> bool + auto block_list_allocator::expand(std::size_t size) noexcept -> bool { auto const total_required_size = size + sizeof(block_header); auto const frames_needed = (total_required_size + kapi::memory::frame::size - 1) / kapi::memory::frame::size; @@ -113,13 +113,13 @@ namespace kernel::memory m_frontier += frames_needed * kapi::memory::frame::size; - if (!m_free_list) + if (!m_block_list) { - m_free_list = block; + m_block_list = block; } else { - auto current = m_free_list; + auto current = m_block_list; while (current->next) { current = current->next; @@ -132,7 +132,7 @@ namespace kernel::memory return true; } - auto free_list_allocator::coalesce(block_header * block) noexcept -> void + auto block_list_allocator::coalesce(block_header * block) noexcept -> void { if (block->next && block->next->free) { @@ -159,7 +159,7 @@ namespace kernel::memory } } - auto free_list_allocator::split(block_header * block, std::size_t size, std::size_t padding) noexcept -> void + auto block_list_allocator::split(block_header * block, std::size_t size, std::size_t padding) noexcept -> void { auto const allocation_size = size + padding; |
