diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-03-16 08:34:13 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-03-16 08:34:13 +0100 |
| commit | 64bf7fcf58ced023be1701ed4508e38f746d40b8 (patch) | |
| tree | 023637c060d169e5a72576f62c9bd616b8b5b937 /arch/x86_64/include | |
| parent | 1e23bfc850f0ca126bff3c56c86419ab1570c96e (diff) | |
| download | teachos-64bf7fcf58ced023be1701ed4508e38f746d40b8.tar.xz teachos-64bf7fcf58ced023be1701ed4508e38f746d40b8.zip | |
kernel/memory: implement basic free-list heap
Diffstat (limited to 'arch/x86_64/include')
| -rw-r--r-- | arch/x86_64/include/arch/memory/page_table.hpp | 10 | ||||
| -rw-r--r-- | arch/x86_64/include/arch/memory/recursive_page_mapper.hpp | 5 |
2 files changed, 11 insertions, 4 deletions
diff --git a/arch/x86_64/include/arch/memory/page_table.hpp b/arch/x86_64/include/arch/memory/page_table.hpp index a82d9e0..003dbf3 100644 --- a/arch/x86_64/include/arch/memory/page_table.hpp +++ b/arch/x86_64/include/arch/memory/page_table.hpp @@ -304,6 +304,11 @@ namespace arch::memory result |= mapper_flags::supervisor_only; } + if ((flags & table_flags::global) != table_flags::empty) + { + result |= mapper_flags::global; + } + return result; } @@ -334,6 +339,11 @@ namespace arch::memory result |= table_flags::user_accessible; } + if ((flags & mapper_flags::global) != mapper_flags::empty) + { + result |= table_flags::global; + } + return result; } diff --git a/arch/x86_64/include/arch/memory/recursive_page_mapper.hpp b/arch/x86_64/include/arch/memory/recursive_page_mapper.hpp index e278a6d..a0c290a 100644 --- a/arch/x86_64/include/arch/memory/recursive_page_mapper.hpp +++ b/arch/x86_64/include/arch/memory/recursive_page_mapper.hpp @@ -10,14 +10,11 @@ namespace arch::memory struct recursive_page_mapper : kapi::memory::page_mapper { - explicit recursive_page_mapper(kapi::memory::frame_allocator & allocator); + explicit recursive_page_mapper(); auto map(kapi::memory::page page, kapi::memory::frame frame, flags flags) -> std::byte * override; auto unmap(kapi::memory::page page) -> void override; auto try_unmap(kapi::memory::page page) noexcept -> bool override; - - private: - kapi::memory::frame_allocator * m_allocator; }; } // namespace arch::memory |
