diff options
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Kernel/KernelKit/UserProcessScheduler.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 26 |
2 files changed, 18 insertions, 10 deletions
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h index 79b06f7c..68ade0d7 100644 --- a/dev/Kernel/KernelKit/UserProcessScheduler.h +++ b/dev/Kernel/KernelKit/UserProcessScheduler.h @@ -195,7 +195,7 @@ namespace Kernel { kInvalidExecutableKind, kExectuableKind, - kExectuableDLLKind, + kExectuableDylibKind, kExectuableKindCount, }; diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index 6cd7fb0b..2d3101f2 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -248,7 +248,7 @@ namespace Kernel this->Image.fCode = nullptr; this->StackFrame = nullptr; - if (this->Kind == kExectuableDLLKind) + if (this->Kind == kExectuableDylibKind) { Bool success = false; @@ -329,15 +329,29 @@ namespace Kernel HAL::mm_map_page((VoidPtr)process.StackFrame, flags); #endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__ - // Create heap according to type of process. - if (process.Kind == UserThread::kExectuableDLLKind) + // React according to process kind. + switch (process.kind) + { + case UserThread::kExectuableDylibKind: { process.DylibDelegate = rtl_init_dylib(process); MUST_PASS(process.DylibDelegate); } + default: + { + kcout << "Unknown process kind: " << number(process.Kind) << endl; + break; + } + } process.StackReserve = new UInt8[process.StackSize]; + if (!process.StackReserve) + { + process.Crash(); + return kErrorProcessFault; + } + #ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__ flags = HAL::kMMFlagsPresent; flags |= HAL::kMMFlagsWr; @@ -346,12 +360,6 @@ namespace Kernel HAL::mm_map_page((VoidPtr)process.StackReserve, flags); #endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__ - if (!process.StackReserve) - { - process.Crash(); - return kErrorProcessFault; - } - process.ProcessParentTeam = &mTeam; process.ProcessId = pid; |
