summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
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
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')
-rw-r--r--dev/kernel/src/FS/HeFS.cc4
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc27
2 files changed, 23 insertions, 8 deletions
diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc
index ccd808ad..b48512c8 100644
--- a/dev/kernel/src/FS/HeFS.cc
+++ b/dev/kernel/src/FS/HeFS.cc
@@ -253,7 +253,7 @@ namespace Kernel
{
if (KStringBuilder::Equals(dir_name, dir->fName))
{
- for (SizeT inode_index = 0UL; inode_index < kHeFSBlockCount; ++inode_index)
+ for (SizeT inode_index = 0UL; inode_index < kHeFSBlockCount; inode_index += 2)
{
if (dir->fIndexNodeStart[inode_index] != 0 ||
dir->fIndexNodeEnd[inode_index] != 0)
@@ -345,7 +345,7 @@ namespace Kernel
if (KStringBuilder::Equals(dir->fName, parent_dir_name))
{
- for (SizeT inode_index = 0UL; inode_index < kHeFSBlockCount; ++inode_index)
+ for (SizeT inode_index = 0UL; inode_index < kHeFSBlockCount; inode_index += 2)
{
if (dir->fIndexNodeStart[inode_index] != 0 ||
dir->fIndexNodeEnd[inode_index] != 0)
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();
}
/***********************************************************************************/