summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h2
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc26
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;