summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/KernelKit
diff options
context:
space:
mode:
authorAmlal <amlal@el-mahrouss-logic.com>2024-09-20 08:27:42 +0200
committerAmlal <amlal@el-mahrouss-logic.com>2024-09-20 08:27:42 +0200
commit3614980bbb672780bbaaef54ab8b1fa6a27d932c (patch)
treec4e5434b04e657315d993d50eb99baa43405a005 /dev/ZKA/KernelKit
parent5f4a9440e97d6602222c93e8dcab8c483800a462 (diff)
Patches for kernel, alongside code fixes for user after free and Heap API refactor.
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZKA/KernelKit')
-rw-r--r--dev/ZKA/KernelKit/FileMgr.hxx16
-rw-r--r--dev/ZKA/KernelKit/Heap.hxx20
2 files changed, 21 insertions, 15 deletions
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 <typename Encoding, typename Class>
FileStream<Encoding, Class>::~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 <typename T, typename... Args>
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 <typename T>
inline Void mm_delete_class(T* cls)
{
cls->~T();
- delete cls;
+ mm_delete_heap((VoidPtr)cls);
+
+ cls = nullptr;
}
} // namespace Kernel