diff options
Diffstat (limited to 'dev/kernel/src/UserProcessScheduler.cc')
| -rw-r--r-- | dev/kernel/src/UserProcessScheduler.cc | 11 |
1 files changed, 10 insertions, 1 deletions
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; |
