summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/UserProcessScheduler.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-22 18:30:00 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-04-22 18:30:00 +0200
commit5ba2b615e172d93d1ffb06f611b19a4388ed074e (patch)
tree3d3ad0d7c195a2d01aaf03155e77499cd6788fcf /dev/kernel/src/UserProcessScheduler.cc
parent8434a141533891ebd7cb5369c0541cb9a9c07971 (diff)
dev, kernel: Milestone towards 0.0.2, see details.
Details: - Added support for 512 process teams (kTeams array). - New SwitchTeam() API in UserProcessScheduler. - Kernel main loop rotates active team every 200ms. - Renamed syscall tables for clarity (kSyscalls → kSysCalls, etc.). - Replaced kKernelMaxSystemCalls with kMaxDispatchCallCount. - Updated call sites to match new naming. - Bumped format version to 0x0101. - Added reserved fields to HEFS_BOOT_NODE for future use. - Changed inode indexing logic to operate on (start, size) pairs. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/UserProcessScheduler.cc')
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc27
1 files changed, 21 insertions, 6 deletions
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index 77831082..d8d34010 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -35,7 +35,7 @@ namespace Kernel
/// @brief External reference of the thread scheduler.
/***********************************************************************************/
- STATIC UserProcessScheduler kProcessScheduler;
+ STATIC UserProcessScheduler kScheduler;
Process::Process() = default;
Process::~Process() = default;
@@ -406,7 +406,7 @@ namespace Kernel
UserProcessScheduler& UserProcessScheduler::The()
{
- return kProcessScheduler;
+ return kScheduler;
}
/***********************************************************************************/
@@ -512,7 +512,22 @@ namespace Kernel
return mTeam;
}
- /// @internal
+ /***********************************************************************************/
+ /// @brief Switches the current team.
+ /// @param team the new team to switch to.
+ /// @retval true team was switched.
+ /// @retval false team was not switched.
+ /***********************************************************************************/
+
+ BOOL UserProcessScheduler::SwitchTeam(ProcessTeam& team)
+ {
+ if (team.AsArray().Count() < 1)
+ return No;
+
+ kScheduler.mTeam = team;
+
+ return Yes;
+ }
/// @brief Gets current running process.
/// @return
@@ -525,11 +540,11 @@ namespace Kernel
/// @return Process ID integer.
ErrorOr<PID> UserProcessHelper::TheCurrentPID()
{
- if (!kProcessScheduler.CurrentProcess())
+ if (!kScheduler.CurrentProcess())
return ErrorOr<PID>{-kErrorProcessFault};
kout << "UserProcessHelper::TheCurrentPID: Leaking ProcessId...\r";
- return ErrorOr<PID>{kProcessScheduler.CurrentProcess().Leak().ProcessId};
+ return ErrorOr<PID>{kScheduler.CurrentProcess().Leak().ProcessId};
}
/// @brief Check if process can be schedulded.
@@ -568,7 +583,7 @@ namespace Kernel
SizeT UserProcessHelper::StartScheduling()
{
- return kProcessScheduler.Run();
+ return kScheduler.Run();
}
/***********************************************************************************/