forked from Bananymous/banan-os
Kernel: Scheduler can now check if tid is valid
Tid can become invalid if the thread is already terminated
This commit is contained in:
parent
642a6aa4ad
commit
0f23e1f0f4
|
@ -31,6 +31,8 @@ namespace Kernel
|
|||
Thread& current_thread();
|
||||
static pid_t current_tid();
|
||||
|
||||
static bool is_valid_tid(pid_t tid);
|
||||
|
||||
private:
|
||||
Scheduler() = default;
|
||||
|
||||
|
|
|
@ -373,4 +373,26 @@ namespace Kernel
|
|||
}
|
||||
}
|
||||
|
||||
bool Scheduler::is_valid_tid(pid_t tid)
|
||||
{
|
||||
CriticalScope _;
|
||||
|
||||
if (s_instance == nullptr)
|
||||
return tid == 0;
|
||||
|
||||
for (auto& thread : s_instance->m_active_threads)
|
||||
if (thread.thread->tid() == tid)
|
||||
return true;
|
||||
|
||||
for (auto& thread : s_instance->m_sleeping_threads)
|
||||
if (thread.thread->tid() == tid)
|
||||
return true;
|
||||
|
||||
for (auto& thread : s_instance->m_blocking_threads)
|
||||
if (thread.thread->tid() == tid)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue