Skip to content

Commit 2585544

Browse files
committed
feat: add Threads for cgroupv2
Signed-off-by: Rouzip <[email protected]>
1 parent 2f48571 commit 2585544

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

cgroup2/manager.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,32 @@ func (c *Manager) Procs(recursive bool) ([]uint64, error) {
504504
return processes, err
505505
}
506506

507+
func (c *Manager) Threads(recursive bool) ([]uint64, error) {
508+
var threads []uint64
509+
err := filepath.Walk(c.path, func(p string, info os.FileInfo, err error) error {
510+
if err != nil {
511+
return err
512+
}
513+
if !recursive && info.IsDir() {
514+
if p == c.path {
515+
return nil
516+
}
517+
return filepath.SkipDir
518+
}
519+
_, name := filepath.Split(p)
520+
if name != cgroupThreads {
521+
return nil
522+
}
523+
procs, err := parseCgroupProcsFile(p)
524+
if err != nil {
525+
return err
526+
}
527+
threads = append(threads, procs...)
528+
return nil
529+
})
530+
return threads, err
531+
}
532+
507533
func (c *Manager) MoveTo(destination *Manager) error {
508534
processes, err := c.Procs(true)
509535
if err != nil {

cgroup2/manager_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,9 @@ func TestKill(t *testing.T) {
211211
pids, err := manager.Procs(true)
212212
require.NoError(t, err)
213213
require.Len(t, pids, numProcs, "pid count unexpected")
214+
threads, err := manager.Threads(true)
215+
require.NoError(t, err)
216+
require.Len(t, threads, numProcs, "pid count unexpected")
214217

215218
// Now run kill, and check that nothing is running after.
216219
err = manager.Kill()

0 commit comments

Comments
 (0)