summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/src')
-rw-r--r--dev/kernel/src/BinaryMutex.cc2
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc11
2 files changed, 11 insertions, 2 deletions
diff --git a/dev/kernel/src/BinaryMutex.cc b/dev/kernel/src/BinaryMutex.cc
index c149b362..f9faadd2 100644
--- a/dev/kernel/src/BinaryMutex.cc
+++ b/dev/kernel/src/BinaryMutex.cc
@@ -67,7 +67,7 @@ namespace Kernel
/***********************************************************************************/
BOOL BinaryMutex::WaitForProcess(const Int16& sec) noexcept
{
- HardwareTimer hw_timer(rtl_seconds(sec));
+ HardwareTimer hw_timer(rtl_milliseconds(sec));
hw_timer.Wait();
return !this->IsLocked();
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index 8df98f87..7aded611 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -31,8 +31,10 @@ namespace Kernel
STATIC UInt32 kLastExitCode = 0U;
+ STATIC BOOL kCurrentlySwitching = No;
+
/***********************************************************************************/
- /// @brief External reference of the thread scheduler.
+ /// @brief Scheduler itself.
/***********************************************************************************/
STATIC UserProcessScheduler kScheduler;
@@ -470,6 +472,8 @@ namespace Kernel
return 0UL;
}
+ kCurrentlySwitching = Yes;
+
for (; process_index < mTeam.AsArray().Capacity(); ++process_index)
{
auto& process = mTeam.AsArray()[process_index];
@@ -502,6 +506,8 @@ namespace Kernel
}
}
+ kCurrentlySwitching = No;
+
return process_index;
}
@@ -524,6 +530,9 @@ namespace Kernel
if (team.AsArray().Count() < 1)
return No;
+ if (kCurrentlySwitching)
+ return No;
+
kScheduler.mTeam = team;
return Yes;