diff --git a/proc_status.go b/proc_status.go index c055d075..529b882e 100644 --- a/proc_status.go +++ b/proc_status.go @@ -32,6 +32,8 @@ type ProcStatus struct { // Thread group ID. TGID int + // List of Pid namespace. + NSpids []uint64 // Peak virtual memory size. VmPeak uint64 // nolint:revive @@ -127,6 +129,8 @@ func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintByt copy(s.UIDs[:], strings.Split(vString, "\t")) case "Gid": copy(s.GIDs[:], strings.Split(vString, "\t")) + case "NSpid": + s.NSpids = calcNSPidsList(vString) case "VmPeak": s.VmPeak = vUintBytes case "VmSize": @@ -200,3 +204,18 @@ func calcCpusAllowedList(cpuString string) []uint64 { sort.Slice(g, func(i, j int) bool { return g[i] < g[j] }) return g } + +func calcNSPidsList(nspidsString string) []uint64 { + s := strings.Split(nspidsString, " ") + var nspids []uint64 + + for _, nspid := range s { + nspid, _ := strconv.ParseUint(nspid, 10, 64) + if nspid == 0 { + continue + } + nspids = append(nspids, nspid) + } + + return nspids +} diff --git a/proc_status_test.go b/proc_status_test.go index 2f0884ff..9d22a48e 100644 --- a/proc_status_test.go +++ b/proc_status_test.go @@ -36,6 +36,7 @@ func TestProcStatus(t *testing.T) { }{ {name: "Pid", want: 26231, have: s.PID}, {name: "Tgid", want: 26231, have: s.TGID}, + {name: "NSpid", want: 1, have: int(s.NSpids[0])}, {name: "VmPeak", want: 58472 * 1024, have: int(s.VmPeak)}, {name: "VmSize", want: 58440 * 1024, have: int(s.VmSize)}, {name: "VmLck", want: 0 * 1024, have: int(s.VmLck)},