diff --git a/Tasking/Task.cpp b/Tasking/Task.cpp index 0e4d089..4662869 100644 --- a/Tasking/Task.cpp +++ b/Tasking/Task.cpp @@ -202,6 +202,23 @@ namespace Tasking PCB *Task::GetCurrentProcess() { return GetCurrentCPU()->CurrentProcess; } TCB *Task::GetCurrentThread() { return GetCurrentCPU()->CurrentThread; } + PCB *Task::GetProcessByID(UPID ID) + { + for (size_t i = 0; i < ListProcess.size(); i++) + if (ListProcess[i]->ID == ID) + return ListProcess[i]; + return nullptr; + } + + TCB *Task::GetThreadByID(UTID ID) + { + for (size_t i = 0; i < ListProcess.size(); i++) + for (size_t j = 0; j < ListProcess[i]->Threads.size(); j++) + if (ListProcess[i]->Threads[j]->ID == ID) + return ListProcess[i]->Threads[j]; + return nullptr; + } + void Task::WaitForProcess(PCB *pcb) { if (!pcb) diff --git a/include/task.hpp b/include/task.hpp index 2f0b3f3..045f1d0 100644 --- a/include/task.hpp +++ b/include/task.hpp @@ -267,6 +267,7 @@ namespace Tasking void SignalShutdown(); void RevertProcessCreation(PCB *Process); void RevertThreadCreation(TCB *Thread); + long GetUsage(int Core) { if (IdleProcess) @@ -274,6 +275,7 @@ namespace Tasking else return 0; } + void KillThread(TCB *tcb, int Code) { tcb->Status = TaskStatus::Terminated; @@ -298,6 +300,10 @@ namespace Tasking */ TCB *GetCurrentThread(); + PCB *GetProcessByID(UPID ID); + + TCB *GetThreadByID(UTID ID); + /** @brief Wait for process to terminate */ void WaitForProcess(PCB *pcb);