diff options
| author | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-11-22 10:58:57 +0100 |
|---|---|---|
| committer | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-11-22 10:58:57 +0100 |
| commit | b96572fe175d4ea8bee25c19f91426ea10042d1f (patch) | |
| tree | 236b2dfe3030c1b902143ee7978a5644f3142a72 /dev/ZKAKit/src/UserProcessScheduler.cc | |
| parent | f19ebc65a5df6268d37f5503e9bec71825f7e3aa (diff) | |
CUSA/UPS: Freeze process before killing it (if exit code is successful)
Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/src/UserProcessScheduler.cc')
| -rw-r--r-- | dev/ZKAKit/src/UserProcessScheduler.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc index 313f1532..9a4918af 100644 --- a/dev/ZKAKit/src/UserProcessScheduler.cc +++ b/dev/ZKAKit/src/UserProcessScheduler.cc @@ -229,18 +229,19 @@ namespace Kernel /***********************************************************************************/ /** - @brief Process exit method. + @brief Exit process method. + @param exit_code The process's exit code. */ /***********************************************************************************/ - void UserProcess::Exit(const Int32& exit_code) + Void UserProcess::Exit(const Int32& exit_code) { - this->Status = exit_code > 0 ? ProcessStatusKind::kKilled : ProcessStatusKind::KFinishing; + this->Status = exit_code > 0 ? ProcessStatusKind::kKilled : ProcessStatusKind::kFrozen; this->fLastExitCode = exit_code; kLastExitCode = exit_code; - auto memory_list = this->MemoryHeap; + auto memory_heap_list = this->MemoryHeap; #ifdef __ZKA_AMD64__ auto pd = hal_read_cr3(); @@ -248,23 +249,23 @@ namespace Kernel #endif // Deleting memory lists. Make sure to free all of them. - while (memory_list) + while (memory_heap_list) { - if (memory_list->MemoryEntry) + if (memory_heap_list->MemoryEntry) { - MUST_PASS(mm_delete_heap(memory_list->MemoryEntry)); + MUST_PASS(mm_delete_heap(memory_heap_list->MemoryEntry)); } #ifdef __ZKA_AMD64__ hal_write_cr3(pd); #endif - auto next = memory_list->MemoryNext; + auto next = memory_heap_list->MemoryNext; - mm_delete_heap(memory_list); - memory_list = nullptr; + mm_delete_heap(memory_heap_list); - memory_list = next; + memory_heap_list = nullptr; + memory_heap_list = next; } //! Free the memory's page directory. |
