Procházet zdrojové kódy

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).
Andreas Kling před 4 roky
rodič
revize
d38b4e4665
2 změnil soubory, kde provedl 11 přidání a 4 odebrání
  1. 10 4
      Kernel/Heap/kmalloc.cpp
  2. 1 0
      Kernel/Heap/kmalloc.h

+ 10 - 4
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)

+ 1 - 0
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;