aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/heap
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2025-02-20 10:58:17 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2025-02-20 10:58:17 +0000
commitcd502936227e48a36d9e933d26aac2ee29d3bc29 (patch)
tree9fe872f2c088964465acd51d5e6e54e15570b9d1 /arch/x86_64/src/memory/heap
parent6c4ce82c3f9cc920bcde74fc10fdfd39b477b9f4 (diff)
downloadteachos-cd502936227e48a36d9e933d26aac2ee29d3bc29.tar.xz
teachos-cd502936227e48a36d9e933d26aac2ee29d3bc29.zip
Add singelton implementation for global heap allocator
Diffstat (limited to 'arch/x86_64/src/memory/heap')
-rw-r--r--arch/x86_64/src/memory/heap/global_heap_allocator.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/x86_64/src/memory/heap/global_heap_allocator.cpp b/arch/x86_64/src/memory/heap/global_heap_allocator.cpp
index 11848ed..4e3a274 100644
--- a/arch/x86_64/src/memory/heap/global_heap_allocator.cpp
+++ b/arch/x86_64/src/memory/heap/global_heap_allocator.cpp
@@ -5,13 +5,17 @@
namespace teachos::arch::memory::heap
{
- static global_heap_allocator::allocator = linked_list_allocator{HEAP_START, HEAP_START + HEAP_SIZE};
-
- auto global_heap_allocator::allocate(std::size_t size) -> void * { return allocator.allocate(size); }
+ auto global_heap_allocator::allocate(std::size_t size) -> void * { return get_underlying_allocator().allocate(size); }
auto global_heap_allocator::deallocate(void * pointer, std::size_t size) -> void
{
- allocator.deallocate(pointer, size);
+ get_underlying_allocator().deallocate(pointer, size);
+ }
+
+ auto global_heap_allocator::get_underlying_allocator() -> linked_list_allocator &
+ {
+ static linked_list_allocator allocator{HEAP_START, HEAP_START + HEAP_SIZE};
+ return allocator;
}
} // namespace teachos::arch::memory::heap