From f57ad7fc812a0e449709f9a6dd208677fc3629ee Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Sun, 20 Oct 2024 03:00:34 +0300 Subject: [PATCH] task: Implement new process state Added "Frozen" for vfork implementation. --- core/panic/ui.cpp | 2 ++ include/task.hpp | 15 ++++++++++++++- kshell/commands/top.cpp | 1 + tests/taskmgr.cpp | 3 +++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/panic/ui.cpp b/core/panic/ui.cpp index e185cbbc..80b1c07b 100644 --- a/core/panic/ui.cpp +++ b/core/panic/ui.cpp @@ -525,6 +525,7 @@ nsa void DisplayProcessScreen(CPU::ExceptionFrame *Frame, bool IgnoreReady = tru "35m", // Core dump "1;31m", // Zombie "31m", // Terminated + "1;33m", // Frozen }; const char *StatusString[] = { @@ -539,6 +540,7 @@ nsa void DisplayProcessScreen(CPU::ExceptionFrame *Frame, bool IgnoreReady = tru "CRD", // Core dump "ZMB", // Zombie "TRM", // Terminated + "FRZ", // Frozen }; if (!TaskManager) diff --git a/include/task.hpp b/include/task.hpp index 6f645d78..0f884501 100644 --- a/include/task.hpp +++ b/include/task.hpp @@ -170,8 +170,15 @@ namespace Tasking */ Terminated, + /** + * Frozen + * + * Used internally by the kernel + */ + Frozen, + _StatusMin = UnknownStatus, - _StatusMax = Terminated + _StatusMax = Frozen }; enum TaskPriority @@ -475,6 +482,12 @@ namespace Tasking TaskInfo Info{}; ThreadLocalStorage TLS{}; + struct + { + bool vforked = false; + TCB *CallingThread = nullptr; + } Linux{}; + /* Filesystem */ FileNode *CWD; FileNode *Executable; diff --git a/kshell/commands/top.cpp b/kshell/commands/top.cpp index 5ee7e402..fbafc9ad 100644 --- a/kshell/commands/top.cpp +++ b/kshell/commands/top.cpp @@ -37,6 +37,7 @@ const char *TaskStateStrings[] = { "CoreDump", // Core dump "Zombie", // Zombie "Terminated", // Terminated + "Frozen", // Frozen }; void cmd_top(const char *) diff --git a/tests/taskmgr.cpp b/tests/taskmgr.cpp index b87e96b9..5daa6f07 100644 --- a/tests/taskmgr.cpp +++ b/tests/taskmgr.cpp @@ -32,6 +32,8 @@ const char *Statuses[] = { "FF0088", /* Zombie */ "FF0000", /* Terminated */ + + "FF8800", /* Frozen */ }; const char *StatusesSign[] = { @@ -46,6 +48,7 @@ const char *StatusesSign[] = { "Core", "Zombie", "Terminated", + "Frozen", }; const char *SuccessSourceStrings[] = {