diff options
author | Andreas Kling <kling@serenityos.org> | 2021-07-11 13:19:33 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-11 14:14:51 +0200 |
commit | d38b4e46655758c1f924451af119c302bcf4c009 (patch) | |
tree | 0610e93e6dde8980854aa665bea245a3d687014f /Kernel/Heap | |
parent | 98080497d28540a48bec50a92b356a4edaddc235 (diff) | |
download | serenity-d38b4e46655758c1f924451af119c302bcf4c009.zip |
Kernel: Add kfree_sized(), kfree() with a known allocation size
C++14 gave us sized operator delete, but we haven't been taking
advantage of it. Let's get to a point where it can help us by
adding kfree_sized(void*, size_t).
Diffstat (limited to 'Kernel/Heap')
-rw-r--r-- | Kernel/Heap/kmalloc.cpp | 14 | ||||
-rw-r--r-- | Kernel/Heap/kmalloc.h | 1 |
2 files changed, 11 insertions, 4 deletions
diff --git a/Kernel/Heap/kmalloc.cpp b/Kernel/Heap/kmalloc.cpp index 6b9f9cdc6b..bee099cc53 100644 --- a/Kernel/Heap/kmalloc.cpp +++ b/Kernel/Heap/kmalloc.cpp @@ -270,6 +270,12 @@ void* kmalloc(size_t size) return ptr; } +void kfree_sized(void* ptr, size_t size) +{ + (void)size; + return kfree(ptr); +} + void kfree(void* ptr) { if (!ptr) @@ -333,9 +339,9 @@ void operator delete(void* ptr) noexcept return kfree(ptr); } -void operator delete(void* ptr, size_t) noexcept +void operator delete(void* ptr, size_t size) noexcept { - return kfree(ptr); + return kfree_sized(ptr, size); } void operator delete[](void* ptr) noexcept @@ -343,9 +349,9 @@ void operator delete[](void* ptr) noexcept return kfree(ptr); } -void operator delete[](void* ptr, size_t) noexcept +void operator delete[](void* ptr, size_t size) noexcept { - return kfree(ptr); + return kfree_sized(ptr, size); } void get_kmalloc_stats(kmalloc_stats& stats) diff --git a/Kernel/Heap/kmalloc.h b/Kernel/Heap/kmalloc.h index fe35095663..11fa984011 100644 --- a/Kernel/Heap/kmalloc.h +++ b/Kernel/Heap/kmalloc.h @@ -42,6 +42,7 @@ void kmalloc_init(); void* krealloc(void*, size_t); void kfree(void*); +void kfree_sized(void*, size_t); struct kmalloc_stats { size_t bytes_allocated; |