summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/src/UserProcessScheduler.cc
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2024-10-30 06:55:35 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2024-10-30 06:55:35 +0100
commit8600ffcc1ddfc861e761baf2682490061a55cca8 (patch)
treec51f0b4ce9fa8565c683be7209890c21ab09a99a /dev/ZKAKit/src/UserProcessScheduler.cc
parent708400a70921055b06013f9b149449be64a7d585 (diff)
FIX: Scheduler should always check for a valid image, even for DLLs.
FIX: Fix ZBA modules btb files. FIX: Don't put while statement on page allocation. Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/src/UserProcessScheduler.cc')
-rw-r--r--dev/ZKAKit/src/UserProcessScheduler.cc24
1 files changed, 9 insertions, 15 deletions
diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc
index dfa04537..61f6ba7b 100644
--- a/dev/ZKAKit/src/UserProcessScheduler.cc
+++ b/dev/ZKAKit/src/UserProcessScheduler.cc
@@ -320,7 +320,7 @@ namespace Kernel
return -kErrorInvalidData;
#ifdef __ZKA_AMD64__
- process.VMRegister = reinterpret_cast<UIntPtr>(HAL::mm_alloc_bitmap(Yes, Yes, sizeof(PDE), Yes));
+ process.VMRegister = reinterpret_cast<UIntPtr>(mm_new_heap(sizeof(PDE), No, Yes));
#endif // __ZKA_AMD64__
process.StackFrame = reinterpret_cast<HAL::StackFramePtr>(mm_new_heap(sizeof(HAL::StackFrame), Yes, Yes));
@@ -339,16 +339,13 @@ namespace Kernel
if (!process.Image)
{
- if (process.Kind != UserProcess::kExectuableDLLKind)
- {
- process.Crash();
- return -kErrorProcessFault;
- }
+ process.Crash();
+ return -kErrorProcessFault;
}
// Get preferred stack size by app.
- const auto cMaxStackSize = process.StackSize;
- process.StackReserve = reinterpret_cast<UInt8*>(mm_new_heap(sizeof(UInt8) * cMaxStackSize, Yes, Yes));
+ const auto kMaxStackSize = process.StackSize;
+ process.StackReserve = reinterpret_cast<UInt8*>(mm_new_heap(sizeof(UInt8) * kMaxStackSize, Yes, Yes));
if (!process.StackReserve)
{
@@ -424,12 +421,14 @@ namespace Kernel
SizeT process_index = 0; //! we store this guy to tell the scheduler how many
//! things we have scheduled.
- if (mTeam.mProcessAmount < 1)
+ if (mTeam.mProcessAmount == 0)
{
kcout << "UserProcessScheduler::Run(): This team doesn't have any process!\r";
return 0;
}
+ kcout << "UserProcessScheduler::Run(): This team has process # " << number(mTeam.mProcessAmount) << endl;
+
for (; process_index < mTeam.AsArray().Capacity(); ++process_index)
{
auto& process = mTeam.AsArray()[process_index];
@@ -500,12 +499,7 @@ namespace Kernel
process.Status == ProcessStatusKind::kDead)
return No;
- if (process.Status == ProcessStatusKind::kStarting &&
- process.Image)
- return Yes;
-
- if (!process.Image &&
- process.Kind == UserProcess::kExectuableKind)
+ if (!process.Image)
return No;
return process.PTime < 1 && process.Status == ProcessStatusKind::kRunning;