summaryrefslogtreecommitdiffhomepage
path: root/dev/zka/src/UserProcessScheduler.cxx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-10-20 17:53:37 +0200
commit7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch)
treea373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/src/UserProcessScheduler.cxx
parent22e85ecdb17888268d32997b20e01cc98968cc3d (diff)
IMP: New implementations and improvements.
- Heap class allocation have been fixed. - Scheduler allocation has been fixed. - A new better flow for the kernel has been designed. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/zka/src/UserProcessScheduler.cxx')
-rw-r--r--dev/zka/src/UserProcessScheduler.cxx29
1 files changed, 21 insertions, 8 deletions
diff --git a/dev/zka/src/UserProcessScheduler.cxx b/dev/zka/src/UserProcessScheduler.cxx
index d0236578..af9ab5d3 100644
--- a/dev/zka/src/UserProcessScheduler.cxx
+++ b/dev/zka/src/UserProcessScheduler.cxx
@@ -35,10 +35,12 @@ namespace Kernel
STATIC UInt32 cLastExitCode = 0U;
/***********************************************************************************/
- /// @brief User Process scheduler global object.
+ /// @brief User Process scheduler global and external reference of thread scheduler.
/***********************************************************************************/
UserProcessScheduler* cProcessScheduler = nullptr;
+ EXTERN HardwareThreadScheduler* cHardwareThreadScheduler;
+
/// @brief Gets the last exit code.
/// @note Not thread-safe.
@@ -54,8 +56,15 @@ namespace Kernel
Void UserProcess::Crash()
{
- if (*this->Name != 0)
- kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl;
+ if (*this->Name != 0 &&
+ *this->Name > 'A')
+{
+ kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl;
+}
+ else
+ {
+ return;
+ }
this->Exit(kErrorProcessFault);
}
@@ -505,11 +514,15 @@ namespace Kernel
{
if (!cProcessScheduler)
{
- cProcessScheduler = mm_new_class<UserProcessScheduler>();
- return Yes;
+ cProcessScheduler = new UserProcessScheduler();
}
+
+ if (!cHardwareThreadScheduler)
+ {
+ cHardwareThreadScheduler = new HardwareThreadScheduler();
+ }
- return No;
+ return Yes;
}
/***********************************************************************************/
@@ -520,12 +533,12 @@ namespace Kernel
SizeT UserProcessHelper::StartScheduling()
{
- kcout << "Sched: Trying to schedule processes...\r";
+ kcout << "UserProcessScheduler: Trying to schedule user processes...\r";
if (!cProcessScheduler)
return 0;
- kcout << "Sched: Scheduling processes...\r";
+ kcout << "UserProcessScheduler: Object is valid, scheduling user processes...\r";
SizeT ret = cProcessScheduler->Run();
return ret;