From b6464d3fcd11ad43d1d0421fa8484eda2ac1708f Mon Sep 17 00:00:00 2001 From: Amlal Date: Wed, 29 Jan 2025 09:15:17 +0100 Subject: WiP: Tweaks and will finish SATA support and ATA (DMA) support. Signed-off-by: Amlal --- dev/Kernel/src/HardwareThreadScheduler.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'dev/Kernel/src/HardwareThreadScheduler.cc') diff --git a/dev/Kernel/src/HardwareThreadScheduler.cc b/dev/Kernel/src/HardwareThreadScheduler.cc index 66500f73..573b86d6 100644 --- a/dev/Kernel/src/HardwareThreadScheduler.cc +++ b/dev/Kernel/src/HardwareThreadScheduler.cc @@ -62,8 +62,9 @@ namespace Kernel Bool HardwareThread::IsBusy() noexcept { STATIC Int64 busy_timer = 0U; + STATIC Int64 timeout_max = 0x1000000; // an arbitrary value used to tell if the timeout hasn't been reached yet. - if (fBusy && busy_timer > this->fPTime) + if (fBusy && busy_timer > timeout_max) { busy_timer = 0U; fBusy = No; @@ -111,6 +112,9 @@ namespace Kernel /***********************************************************************************/ Bool HardwareThread::Switch(VoidPtr image_ptr, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid) { + if (this->IsBusy()) + return NO; + this->fStack = frame; this->fSourcePID = pid; -- cgit v1.2.3