Add kernel.ThreadGroup.ForEachTask().

PiperOrigin-RevId: 733991896
This commit is contained in:
Ayush Ranjan
2025-03-05 22:23:11 -08:00
committed by gVisor bot
parent 138e98fb7d
commit 156f457e28
+11
View File
@@ -478,6 +478,17 @@ func (tg *ThreadGroup) MemberIDs(pidns *PIDNamespace) []ThreadID {
return tasks
}
// ForEachTask invokes f() on each task in tg.
func (tg *ThreadGroup) ForEachTask(f func(t *Task) bool) {
tg.pidns.owner.mu.RLock()
defer tg.pidns.owner.mu.RUnlock()
for t := tg.tasks.Front(); t != nil; t = t.Next() {
if !f(t) {
break
}
}
}
// ID returns tg's leader's thread ID in its own PID namespace.
// If tg's leader is dead, ID returns 0.
func (tg *ThreadGroup) ID() ThreadID {