diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-03 11:47:03 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-03 11:47:03 +0100 |
| commit | 140d983c55e0f9a2d1829c997d7751f234703fb6 (patch) | |
| tree | fdf017bbb0f497bd7c292af136cf6108c4e8e610 /dev/ZKAKit/src/CodeMgr.cc | |
| parent | fc3abbd067a4cc0d3b502afc8af5bc1e77e2d2fc (diff) | |
FIX: User Scheduler, fix process creation.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
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 |
