From 3614980bbb672780bbaaef54ab8b1fa6a27d932c Mon Sep 17 00:00:00 2001 From: Amlal Date: Fri, 20 Sep 2024 08:27:42 +0200 Subject: Patches for kernel, alongside code fixes for user after free and Heap API refactor. Signed-off-by: Amlal --- dev/ZKA/KernelKit/FileMgr.hxx | 16 ++++++++-------- dev/ZKA/KernelKit/Heap.hxx | 20 +++++++++++++------- 2 files changed, 21 insertions(+), 15 deletions(-) (limited to 'dev/ZKA/KernelKit') diff --git a/dev/ZKA/KernelKit/FileMgr.hxx b/dev/ZKA/KernelKit/FileMgr.hxx index b569ce36..cd557485 100644 --- a/dev/ZKA/KernelKit/FileMgr.hxx +++ b/dev/ZKA/KernelKit/FileMgr.hxx @@ -156,13 +156,13 @@ namespace Kernel NodePtr CreateSwapFile(const Char* path) override; public: - bool Remove(const Char* path) override; - NodePtr Open(const Char* path, const Char* r) override; - Void Write(NodePtr node, VoidPtr data, Int32 flags, SizeT sz) override; - VoidPtr Read(NodePtr node, Int32 flags, SizeT sz) override; - bool Seek(NodePtr node, SizeT off) override; - SizeT Tell(NodePtr node) override; - bool Rewind(NodePtr node) override; + bool Remove(_Input const Char* path) override; + NodePtr Open(_Input const Char* path, _Input const Char* r) override; + Void Write(_Input NodePtr node, _Input VoidPtr data, _Input Int32 flags, _Input SizeT sz) override; + VoidPtr Read(_Input NodePtr node, _Input Int32 flags, _Input SizeT sz) override; + bool Seek(_Input NodePtr node, _Input SizeT off) override; + SizeT Tell(_Input NodePtr node) override; + bool Rewind(_Input NodePtr node) override; Void Write(_Input const Char* name, _Input NodePtr node, @@ -415,6 +415,6 @@ namespace Kernel template FileStream::~FileStream() { - mm_delete_ke_heap(fFile); + mm_delete_heap(fFile); } } // namespace Kernel diff --git a/dev/ZKA/KernelKit/Heap.hxx b/dev/ZKA/KernelKit/Heap.hxx index 41779146..cb8da37d 100644 --- a/dev/ZKA/KernelKit/Heap.hxx +++ b/dev/ZKA/KernelKit/Heap.hxx @@ -18,12 +18,12 @@ namespace Kernel /// @brief Declare pointer as free. /// @param heap_ptr the pointer. /// @return - Int32 mm_delete_ke_heap(voidPtr heap_ptr); + Int32 mm_delete_heap(VoidPtr heap_ptr); /// @brief Declare a new size for heap_ptr. /// @param heap_ptr the pointer. /// @return - VoidPtr mm_realloc_ke_heap(voidPtr heap_ptr, SizeT new_sz); + VoidPtr mm_realloc_heap(VoidPtr heap_ptr, SizeT new_sz); /// @brief Check if pointer is a valid Kernel pointer. /// @param heap_ptr the pointer @@ -35,12 +35,12 @@ namespace Kernel /// @param rw Read Write bit. /// @param user User enable bit. /// @return The newly allocated pointer. - VoidPtr mm_new_ke_heap(const SizeT sz, const Bool rw, const Bool user); + VoidPtr mm_new_heap(const SizeT sz, const Bool rw, const Bool user); /// @brief Protect the heap with a CRC value. /// @param heap_ptr pointer. /// @return if it valid: point has crc now., otherwise fail. - Boolean mm_protect_ke_heap(VoidPtr heap_ptr); + Boolean mm_protect_heap(VoidPtr heap_ptr); /// @brief Makes a Kernel page. /// @param heap_ptr the page pointer. @@ -50,15 +50,21 @@ namespace Kernel template inline T* mm_new_class(Args&&... args) { - T* ptr = new T(move(args)...); - return ptr; + T* cls = (T*)mm_new_heap(sizeof(T), No, No); + MUST_PASS(cls); + + *cls = T(move(args)...); + + return cls; } template inline Void mm_delete_class(T* cls) { cls->~T(); - delete cls; + mm_delete_heap((VoidPtr)cls); + + cls = nullptr; } } // namespace Kernel -- cgit v1.2.3