diff --git a/include/task.hpp b/include/task.hpp index 89870f6..806a91e 100644 --- a/include/task.hpp +++ b/include/task.hpp @@ -473,6 +473,7 @@ namespace Tasking void SetWorkingDirectory(Node *node); void SetExe(const char *path); size_t GetSize(); + TCB *GetThread(TID ID); PCB(class Task *ctx, PCB *Parent, diff --git a/tasking/process.cpp b/tasking/process.cpp index 734252e..692aff1 100644 --- a/tasking/process.cpp +++ b/tasking/process.cpp @@ -48,6 +48,14 @@ using namespace vfs; namespace Tasking { + TCB *PCB::GetThread(TID ID) + { + auto it = std::find_if(this->Threads.begin(), this->Threads.end(), + [ID](TCB *t) + { return t->ID == ID; }); + return it != this->Threads.end() ? *it : nullptr; + } + int PCB::SendSignal(int sig) { return this->Signals->SendSignal(sig);