summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-10-08 10:31:42 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-10-08 10:31:42 +0200
commit0c09a89c0b2070e6fe2a96756e1f118ff75033f7 (patch)
treec7913a1fcaf4056ed062a3b2fc4b78c482df7084 /dev
parent10f074db10e2b2a2d6bbd487368b22dac314cd3b (diff)
FIX: Fix useless long name, alongside a new WR (WriteRead) field.
Diffstat (limited to 'dev')
-rw-r--r--dev/zka/src/Heap.cxx43
1 files changed, 31 insertions, 12 deletions
diff --git a/dev/zka/src/Heap.cxx b/dev/zka/src/Heap.cxx
index 71398ca2..edab14a2 100644
--- a/dev/zka/src/Heap.cxx
+++ b/dev/zka/src/Heap.cxx
@@ -11,15 +11,21 @@
#include <NewKit/PageMgr.hxx>
#include <NewKit/Utils.hxx>
-//! @file KernelHeap.cxx
-//! @brief Kernel heap allocator.
+/* -------------------------------------------
+
+ Revision History:
+ 10/8/24: FIX: Fix useless long name, alongside a new WR (WriteRead) field.
+
+ ------------------------------------------- */
+
+//! @file Heap.cxx
+//! @brief Kernel's heap allocator.
-#define kKernelHeapMagic (0xD4D7D5)
-#define kKernelHeapHeaderPaddingSz (__BIGGEST_ALIGNMENT__)
+#define kKernelHeapMagic (0xD4D7D5)
+#define kKernelAlignSz (__BIGGEST_ALIGNMENT__)
namespace Kernel
{
-
/// @brief Contains data structures and algorithms for the heap.
namespace Detail
{
@@ -31,21 +37,31 @@ namespace Kernel
struct PACKED HEAP_INFORMATION_BLOCK final
{
///! @brief 32-bit value which contains the magic number of the heap.
- UInt32 fMagic;
+ UInt32 fMagic : 24;
+
///! @brief Boolean value which tells if the heap is allocated.
- Boolean fPresent;
+ Boolean fPresent : 1;
+
/// @brief Is this valued owned by the user?
- Boolean fUser;
+ Boolean fWr : 1;
+
+ /// @brief Is this valued owned by the user?
+ Boolean fUser : 1;
+
/// @brief Is this a page pointer?
- Boolean fPage;
+ Boolean fPage : 1;
+
///! @brief 32-bit CRC checksum.
UInt32 fCRC32;
+
/// @brief 64-bit pointer size.
SizeT fHeapSize;
+
/// @brief 64-bit target pointer.
UIntPtr fHeapPtr;
+
/// @brief Padding bytes for header.
- UInt8 fPadding[kKernelHeapHeaderPaddingSz];
+ UInt8 fPadding[kKernelAlignSz];
};
/// @brief Check for heap address validity.
@@ -128,10 +144,11 @@ namespace Kernel
heap_info_ptr->fCRC32 = No; // dont fill it for now.
heap_info_ptr->fHeapPtr = reinterpret_cast<UIntPtr>(heap_info_ptr) + sizeof(Detail::HEAP_INFORMATION_BLOCK);
heap_info_ptr->fPage = No;
+ heap_info_ptr->fWr = wr;
heap_info_ptr->fUser = user;
heap_info_ptr->fPresent = Yes;
- rt_set_memory(heap_info_ptr->fPadding, 0, kKernelHeapHeaderPaddingSz);
+ rt_set_memory(heap_info_ptr->fPadding, 0, kKernelAlignSz);
auto result = reinterpret_cast<VoidPtr>(heap_info_ptr->fHeapPtr);
@@ -205,9 +222,11 @@ namespace Kernel
heap_blk->fPresent = No;
heap_blk->fHeapPtr = 0;
heap_blk->fCRC32 = 0;
+ heap_blk->fWr = No;
+ heap_blk->fUser = No;
heap_blk->fMagic = 0;
- PTEWrapper pageWrapper(false, false, false, reinterpret_cast<UIntPtr>(heap_blk) - sizeof(Detail::HEAP_INFORMATION_BLOCK));
+ PTEWrapper pageWrapper(No, No, No, reinterpret_cast<UIntPtr>(heap_blk) - sizeof(Detail::HEAP_INFORMATION_BLOCK));
Ref<PTEWrapper> pteAddress{pageWrapper};
kcout << "Freeing pointer address: " << hex_number(reinterpret_cast<UIntPtr>(heap_blk) - sizeof(Detail::HEAP_INFORMATION_BLOCK)) << endl;