summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/src/UserProcessScheduler.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 08:44:53 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 08:44:53 +0100
commit696d6ffdd2404f2aca526075a0df9022e3397d72 (patch)
treea34b4a3026dbd3a2ed41794555ab2f9020c4df35 /dev/ZKAKit/src/UserProcessScheduler.cc
parent50c9f923a00e2fc1b80c9a7d860f96a4509d2232 (diff)
IMP: made make_application to executable, and refactor source code with
better comments. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/src/UserProcessScheduler.cc')
-rw-r--r--dev/ZKAKit/src/UserProcessScheduler.cc26
1 files changed, 14 insertions, 12 deletions
diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc
index 1a060041..4550af4e 100644
--- a/dev/ZKAKit/src/UserProcessScheduler.cc
+++ b/dev/ZKAKit/src/UserProcessScheduler.cc
@@ -118,11 +118,11 @@ namespace Kernel
{
#ifdef __ZKA_AMD64__
auto vm_register = hal_read_cr3();
- hal_write_cr3(reinterpret_cast<VoidPtr>(this->VMRegister));
+ hal_write_cr3(this->VMRegister);
auto ptr = mm_new_heap(sz + pad_amount, Yes, Yes);
- hal_write_cr3(reinterpret_cast<VoidPtr>(vm_register));
+ hal_write_cr3(vm_register);
#else
auto ptr = mm_new_heap(sz + pad_amount, Yes, Yes);
#endif
@@ -183,7 +183,7 @@ namespace Kernel
{
#ifdef __ZKA_AMD64__
auto pd = hal_read_cr3();
- hal_write_cr3(reinterpret_cast<VoidPtr>(this->VMRegister));
+ hal_write_cr3(this->VMRegister);
auto ret = mm_delete_heap(entry->MemoryEntry);
@@ -262,7 +262,7 @@ namespace Kernel
{
#ifdef __ZKA_AMD64__
auto pd = hal_read_cr3();
- hal_write_cr3(reinterpret_cast<VoidPtr>(this->VMRegister));
+ hal_write_cr3(this->VMRegister);
#endif
MUST_PASS(mm_delete_heap(memory_list->MemoryEntry));
@@ -281,7 +281,7 @@ namespace Kernel
}
//! Free the memory's page directory.
- HAL::mm_free_bitmap(reinterpret_cast<VoidPtr>(this->VMRegister));
+ HAL::mm_free_bitmap(this->VMRegister);
//! Delete image if not done already.
if (this->Code && mm_is_valid_heap(this->Code))
@@ -325,10 +325,8 @@ namespace Kernel
ProcessID UserProcessScheduler::Add(UserProcess* process)
{
- kcout << "Create VMRegister of: " << process->Name << endl;
-
#ifdef __ZKA_AMD64__
- process->VMRegister = reinterpret_cast<UIntPtr>(mm_new_heap(sizeof(PDE), No, Yes));
+ process->VMRegister = mm_new_heap(sizeof(PDE), No, Yes);
if (!process->VMRegister)
{
@@ -337,7 +335,7 @@ namespace Kernel
}
#endif // __ZKA_AMD64__
- kcout << "Create StackFrame of: " << process->Name << endl;
+ kcout << "Create page directory for: " << process->Name << endl;
process->StackFrame = reinterpret_cast<HAL::StackFramePtr>(mm_new_heap(sizeof(HAL::StackFrame), Yes, Yes));
@@ -347,11 +345,15 @@ namespace Kernel
return -kErrorProcessFault;
}
+ kcout << "Create stack for: " << process->Name << endl;
+
// Create heap according to type of process->
if (process->Kind == UserProcess::kExectuableDLLKind)
{
- kcout << "Create delegate dylib for: " << process->Name << endl;
process->PefDLLDelegate = rtl_init_dll(process);
+ MUST_PASS(process->PefDLLDelegate);
+
+ kcout << "Create delegate dylib for: " << process->Name << endl;
}
process->StackReserve = new UInt8[process->StackSize];
@@ -362,14 +364,14 @@ namespace Kernel
HAL::mm_map_page((VoidPtr)process->StackReserve, flags);
- kcout << "Validate stack reserve: " << number((UIntPtr)process->StackReserve) << endl;
-
if (!process->StackReserve)
{
process->Crash();
return -kErrorProcessFault;
}
+ kcout << "Created stack reserve for: " << process->Name << endl;
+
auto pid = kProcessIDCounter;
process->ProcessId = pid;