diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-25 10:25:30 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-25 10:25:30 -0500 |
| commit | cdfc807e90c713a3c7e6698c8b255b4523b8d311 (patch) | |
| tree | 8b1ec0306ca45cadaf86917897b03355c436fc5c | |
| parent | 83d870e58457a1d335a1d9b9966a6a1887cc297b (diff) | |
kernel: feat{HAL, src} SMP and HwrdSched improvements, HeapMgr patches.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 4 | ||||
| -rw-r--r-- | src/kernel/src/HardwareThreadScheduler.cc | 2 | ||||
| -rw-r--r-- | src/kernel/src/HeapMgr.cc | 5 | ||||
| -rw-r--r-- | src/kernel/src/IDylibObject.cc | 1 |
4 files changed, 6 insertions, 6 deletions
diff --git a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc index 5a530457..02d7f885 100644 --- a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -117,13 +117,13 @@ EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ThreadID thrdid) if (!stack_frame) return NO; if (!kSMPAware) { - sched_jump_to_task(kHWThread[thrdid].mFramePtr); + sched_jump_to_task(stack_frame); return YES; } if (thrdid > kSMPCount) return NO; - HardwareThreadScheduler::The()[thrdid].Leak()->Busy(NO); + kHWThread[thrdid].mThreadID = thrdid; kHWThread[thrdid].mFramePtr = stack_frame; return YES; diff --git a/src/kernel/src/HardwareThreadScheduler.cc b/src/kernel/src/HardwareThreadScheduler.cc index 41d927f6..577659ba 100644 --- a/src/kernel/src/HardwareThreadScheduler.cc +++ b/src/kernel/src/HardwareThreadScheduler.cc @@ -146,7 +146,7 @@ HAL::StackFramePtr HardwareThreadScheduler::Leak() noexcept { /***********************************************************************************/ Ref<HardwareThread*> HardwareThreadScheduler::operator[](SizeT idx) { if (idx > kMaxAPInsideSched) { - HardwareThread* kFakeThread = nullptr; + static HardwareThread* kFakeThread = nullptr; return {kFakeThread}; } diff --git a/src/kernel/src/HeapMgr.cc b/src/kernel/src/HeapMgr.cc index 848a0377..be252b22 100644 --- a/src/kernel/src/HeapMgr.cc +++ b/src/kernel/src/HeapMgr.cc @@ -246,10 +246,11 @@ _Output Boolean mm_protect_ptr(VoidPtr heap_ptr) { reinterpret_cast<Detail::MM_INFORMATION_BLOCK_PTR>((UIntPtr) heap_ptr - sizeof(Detail::MM_INFORMATION_BLOCK)); - /// if valid, present and is heap header, then compute crc32 + /// AMLALE: if valid, present and is heap header, then compute crc32 if (heap_info_ptr && heap_info_ptr->fPresent && kHeapMgrMagic == heap_info_ptr->fMagic) { + /// AMLALE: Protect only the header, information in it may change. heap_info_ptr->fCRC32 = - ke_calculate_crc32((Char*) heap_info_ptr->fOffset, heap_info_ptr->fSize); + ke_calculate_crc32((Char*) heap_info_ptr, sizeof(Detail::MM_INFORMATION_BLOCK)); return Yes; } diff --git a/src/kernel/src/IDylibObject.cc b/src/kernel/src/IDylibObject.cc index 61191af1..97aec28f 100644 --- a/src/kernel/src/IDylibObject.cc +++ b/src/kernel/src/IDylibObject.cc @@ -10,4 +10,3 @@ #include <KernelKit/DebugOutput.h> #include <KernelKit/IDylibObject.h> -using namespace Kernel; |
