diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index cdc840ffff..0f2277380e 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -522,3 +522,12 @@ void Thread::initialize() g_threads = new InlineLinkedList; Scheduler::initialize(); } + +Vector Thread::all_threads() +{ + Vector threads; + InterruptDisabler disabler; + for (auto* thread = g_threads->head(); thread; thread = thread->next()) + threads.append(thread); + return threads; +} diff --git a/Kernel/Thread.h b/Kernel/Thread.h index c4a0095eef..8899c256d8 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -32,6 +32,8 @@ public: static void initialize(); static void finalize_dying_threads(); + static Vector all_threads(); + int tid() const { return m_tid; } int pid() const;