aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/include
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-03-16 08:34:13 +0100
committerFelix Morgner <felix.morgner@ost.ch>2026-03-16 08:34:13 +0100
commit64bf7fcf58ced023be1701ed4508e38f746d40b8 (patch)
tree023637c060d169e5a72576f62c9bd616b8b5b937 /arch/x86_64/include
parent1e23bfc850f0ca126bff3c56c86419ab1570c96e (diff)
downloadteachos-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.hpp10
-rw-r--r--arch/x86_64/include/arch/memory/recursive_page_mapper.hpp5
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