...

Text file src/golang.conradwood.net/go-easyops/linux/std_cgroup.go~

Documentation: golang.conradwood.net/go-easyops/linux

     1package main
     2
     3import (
     4	"strconv"
     5	"strings"
     6
     7	"golang.conradwood.net/go-easyops/errors"
     8	"golang.conradwood.net/go-easyops/utils"
     9)
    10
    11func CreateStandardCgroup(dir string) error {
    12	err := mkdir(dir)
    13	if err != nil {
    14		return errors.Errorf("failed to create parent cgroup (%s): %s", dir, err)
    15	}
    16	taskdir := dir + "/tasks"
    17	err = mkdir(taskdir)
    18	if err != nil {
    19		return errors.Errorf("failed to create cgroup tasks (%s): %s", taskdir, err)
    20	}
    21	return nil
    22}
    23
    24func get_pids_for_cgroup(cgroupdir string) ([]uint64, error) {
    25	fname := cgroupdir + "/cgroup.procs"
    26	if !utils.FileExists(fname) {
    27		return nil, nil
    28	}
    29	b, err := utils.ReadFile(fname)
    30	if err != nil {
    31		return nil, errors.Wrap(err)
    32	}
    33	var res []uint64
    34	for _, line := range strings.Split(string(b), "\n") {
    35		if line == "" {
    36			continue
    37		}
    38		pid, err := strconv.ParseUint(line, 10, 64)
    39		if err != nil {
    40			return nil, errors.Wrap(err)
    41		}
    42		res = append(res, pid)
    43	}
    44	return res, nil
    45}

View as plain text