diff options
| author | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-10-08 10:31:42 +0200 |
|---|---|---|
| committer | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-10-08 10:31:42 +0200 |
| commit | 0c09a89c0b2070e6fe2a96756e1f118ff75033f7 (patch) | |
| tree | c7913a1fcaf4056ed062a3b2fc4b78c482df7084 /dev | |
| parent | 10f074db10e2b2a2d6bbd487368b22dac314cd3b (diff) | |
FIX: Fix useless long name, alongside a new WR (WriteRead) field.
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/zka/src/Heap.cxx | 43 |
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; |
