diff options
Diffstat (limited to 'Private')
| -rw-r--r-- | Private/KernelKit/KernelHeap.hpp | 18 | ||||
| -rw-r--r-- | Private/Source/KernelHeap.cxx | 6 |
2 files changed, 21 insertions, 3 deletions
diff --git a/Private/KernelKit/KernelHeap.hpp b/Private/KernelKit/KernelHeap.hpp index 69c84b7f..5358236e 100644 --- a/Private/KernelKit/KernelHeap.hpp +++ b/Private/KernelKit/KernelHeap.hpp @@ -13,8 +13,26 @@ #include <NewKit/Defines.hpp> namespace NewOS { + +/// @brief Declare pointer as free. +/// @param heapPtr the pointer. +/// @return Int32 ke_delete_ke_heap(voidPtr allocatedPtr); + +/// @brief Check if pointer is a valid kernel pointer. +/// @param heapPtr the pointer +/// @return if it exists. Boolean ke_is_valid_heap(VoidPtr ptr); + +/// @brief allocate chunk of memory. +/// @param sz size of pointer +/// @param rw read write (true to enable it) +/// @param user is it accesible by user processes? +/// @return the pointer voidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user); + +/// @brief Protect the heap pointer with a CRC32. +/// @param heapPtr HIB pointer. +/// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr); } // namespace NewOS diff --git a/Private/Source/KernelHeap.cxx b/Private/Source/KernelHeap.cxx index 0f2f57dd..72d291a8 100644 --- a/Private/Source/KernelHeap.cxx +++ b/Private/Source/KernelHeap.cxx @@ -127,15 +127,15 @@ Boolean ke_is_valid_heap(VoidPtr heapPtr) { } /// @brief Protect the heap pointer with a CRC32. -/// @param heapPtr -/// @return +/// @param heapPtr HIB pointer. +/// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr) { if (heapPtr) { Detail::HeapInformationBlockPtr virtualAddress = reinterpret_cast<Detail::HeapInformationBlockPtr>( (UIntPtr)heapPtr - sizeof(Detail::HeapInformationBlock)); - if (virtualAddress->fPresent && virtualAddress->fMagic == kKernelHeapMagic) { + if (virtualAddress->fPresent && kKernelHeapMagic == virtualAddress->fMagic) { virtualAddress->fCRC32 = ke_calculate_crc32((Char *)heapPtr, virtualAddress->fTargetPtrSize); return true; |
