summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Sources
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Sources')
-rw-r--r--Kernel/Sources/ProcessScheduler.cxx20
-rw-r--r--Kernel/Sources/SMPManager.cxx14
2 files changed, 23 insertions, 11 deletions
diff --git a/Kernel/Sources/ProcessScheduler.cxx b/Kernel/Sources/ProcessScheduler.cxx
index a536bf52..34bc321d 100644
--- a/Kernel/Sources/ProcessScheduler.cxx
+++ b/Kernel/Sources/ProcessScheduler.cxx
@@ -138,7 +138,7 @@ namespace Kernel
}
/// @brief process name getter.
- const Char* ProcessHeader::GetName() noexcept
+ const Char* ProcessHeader::GetProcessName() noexcept
{
return this->Name;
}
@@ -273,21 +273,21 @@ namespace Kernel
{
auto unwrapped_process = *process.Leak();
- unwrapped_process.PTime = 0;
-
// set the current process.
mTeam.AsRef() = unwrapped_process;
// tell helper to find a core to schedule on.
- ProcessHelper::Switch(mTeam.AsRef().Leak().StackFrame,
- mTeam.AsRef().Leak().ProcessId);
+ ProcessHelper::Switch(unwrapped_process.StackFrame,
+ unwrapped_process.ProcessId);
+
+ unwrapped_process.PTime = static_cast<Int32>(unwrapped_process.Affinity);
- kcout << unwrapped_process.Name << ": process switched.\r";
+ kcout << unwrapped_process.Name << ": has been switched to process core.\r";
}
else
{
// otherwise increment the P-time.
- ++mTeam.AsRef().Leak().PTime;
+ --mTeam.AsRef().Leak().PTime;
}
}
@@ -336,10 +336,10 @@ namespace Kernel
if (process.Leak().GetStatus() == ProcessStatus::kStarting)
{
- if (process.Leak().PTime < static_cast<Int>(kSchedMinMicroTime))
+ if (process.Leak().PTime <= 0)
{
process.Leak().Status = ProcessStatus::kRunning;
- process.Leak().Affinity = AffinityKind::kHartStandard;
+ process.Leak().Affinity = AffinityKind::kStandard;
return true;
}
@@ -347,7 +347,7 @@ namespace Kernel
++process.Leak().PTime;
}
- return process.Leak().PTime > static_cast<Int>(kSchedMinMicroTime);
+ return process.Leak().PTime > 0;
}
/**
diff --git a/Kernel/Sources/SMPManager.cxx b/Kernel/Sources/SMPManager.cxx
index e32f8be7..f5424525 100644
--- a/Kernel/Sources/SMPManager.cxx
+++ b/Kernel/Sources/SMPManager.cxx
@@ -7,6 +7,7 @@
#include <ArchKit/ArchKit.hpp>
#include <KernelKit/ProcessScheduler.hxx>
#include <KernelKit/SMPManager.hpp>
+#include <CFKit/Property.hpp>
///! BUGS: 0
@@ -16,6 +17,8 @@
namespace Kernel
{
+ STATIC Property cSMPCoreName;
+
///! A HardwareThread class takes care of it's owned hardware thread.
///! It has a stack for it's core.
@@ -120,7 +123,16 @@ namespace Kernel
//! @brief Constructor and destructor
///! @brief Default constructor.
- SMPManager::SMPManager() = default;
+ SMPManager::SMPManager()
+ {
+ StringView strCoreName(512);
+ strCoreName += "\\Properties\\Smp\\SchedulerClass";
+
+ cSMPCoreName.GetKey() = strCoreName;
+ cSMPCoreName.GetValue() = (UIntPtr)this;
+
+ kcout << "newoskrnl: initializing " << strCoreName.CData() << endl;
+ }
///! @brief Default destructor.
SMPManager::~SMPManager() = default;