aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2025-02-20 10:41:11 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2025-02-20 10:41:11 +0000
commit6c4ce82c3f9cc920bcde74fc10fdfd39b477b9f4 (patch)
tree03465649821a73db88489e4b1a0adc1f298bf64c /arch/x86_64/src/memory
parentbff6c39a8d4571cd5c41e3926d5fc1428916f32c (diff)
downloadteachos-6c4ce82c3f9cc920bcde74fc10fdfd39b477b9f4.tar.xz
teachos-6c4ce82c3f9cc920bcde74fc10fdfd39b477b9f4.zip
Fix compilation issues
Diffstat (limited to 'arch/x86_64/src/memory')
-rw-r--r--arch/x86_64/src/memory/heap/global_heap_allocator.cpp40
1 files changed, 34 insertions, 6 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 6c31de0..11848ed 100644
--- a/arch/x86_64/src/memory/heap/global_heap_allocator.cpp
+++ b/arch/x86_64/src/memory/heap/global_heap_allocator.cpp
@@ -5,14 +5,42 @@
namespace teachos::arch::memory::heap
{
- auto global_heap_allocator::allocate(std::size_t size) -> void *
- {
- static linked_list_allocator allocator{HEAP_START, HEAP_START + HEAP_SIZE};
- return allocator.allocate(size);
- }
+ 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::deallocate(void * pointer, std::size_t size) -> void
{
- // allocator.deallocate(pointer, size);
+ allocator.deallocate(pointer, size);
}
} // namespace teachos::arch::memory::heap
+
+auto operator new(std::size_t size) -> void *
+{
+ return teachos::arch::memory::heap::global_heap_allocator::allocate(size);
+}
+
+auto operator delete(void * pointer) noexcept -> void
+{
+ teachos::arch::memory::heap::global_heap_allocator::deallocate(pointer, 64);
+}
+
+auto operator delete(void * pointer, std::size_t size) noexcept -> void
+{
+ teachos::arch::memory::heap::global_heap_allocator::deallocate(pointer, size);
+}
+
+auto operator new[](std::size_t size) -> void *
+{
+ return teachos::arch::memory::heap::global_heap_allocator::allocate(size);
+}
+
+auto operator delete[](void * pointer) noexcept -> void
+{
+ teachos::arch::memory::heap::global_heap_allocator::deallocate(pointer, 64);
+}
+
+auto operator delete[](void * pointer, std::size_t size) noexcept -> void
+{
+ teachos::arch::memory::heap::global_heap_allocator::deallocate(pointer, size);
+}