diff options
Diffstat (limited to 'dev/ZKAKit/src/CodeMgr.cc')
| -rw-r--r-- | dev/ZKAKit/src/CodeMgr.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/dev/ZKAKit/src/CodeMgr.cc b/dev/ZKAKit/src/CodeMgr.cc index b71f49d3..4031736a 100644 --- a/dev/ZKAKit/src/CodeMgr.cc +++ b/dev/ZKAKit/src/CodeMgr.cc @@ -16,18 +16,25 @@ namespace Kernel /// @return if the process was started or not. ProcessID rtl_create_process(MainKind main, const Char* process_name) noexcept { + kcout << "Validating process...\r"; + if (!main) return No; - UserProcess proc; + UserProcess* proc = new UserProcess{reinterpret_cast<VoidPtr>(main)}; + + kcout << "Setting-up process...\r"; + + proc->Kind = UserProcess::kExectuableKind; + proc->StackSize = kib_cast(8); + proc->PTime = 0UL; + + rt_copy_memory((VoidPtr)process_name, proc->Name, rt_string_len(process_name)); - proc.Image = reinterpret_cast<VoidPtr>(main); - proc.Kind = UserProcess::kExectuableKind; - proc.StackSize = kib_cast(32); + ProcessID id = UserProcessScheduler::The().Add(*proc); - rt_set_memory(proc.Name, 0, kProcessLen); - rt_copy_memory((VoidPtr)process_name, proc.Name, rt_string_len(process_name)); + delete proc; - return UserProcessScheduler::The().Add(proc); + return id; } } // namespace Kernel |
