summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
diff options
context:
space:
mode:
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();
}
/***********************************************************************************/