#!/bin/sh
_cgroup_state=
cgroup_get_mountpoint()
{
local ctrl="$1"
local mountpoint
[ "$ctrl" ] || tst_brk TBROK "cgroup_get_mountpoint: controller not defined"
[ "$_cgroup_state" ] || tst_brk TBROK "cgroup_get_mountpoint: No previous state found. Forgot to call cgroup_require?"
mountpoint=$(echo "$_cgroup_state" | grep -w "^$ctrl" | awk '{ print $4 }')
echo "$mountpoint"
return 0
}
cgroup_get_test_path()
{
local ctrl="$1"
local mountpoint
local test_path
[ "$ctrl" ] || tst_brk TBROK "cgroup_get_test_path: controller not defined"
[ "$_cgroup_state" ] || tst_brk TBROK "cgroup_get_test_path: No previous state found. Forgot to call cgroup_require?"
mountpoint=$(cgroup_get_mountpoint "$ctrl")
test_path="$mountpoint/ltp/test-$$"
[ ! -e "$test_path" ] && tst_brk TBROK "cgroup_get_test_path: No test path found. Forgot to call cgroup_require?"
echo "$test_path"
return 0
}
cgroup_get_version()
{
local ctrl="$1"
local version
[ "$ctrl" ] || tst_brk TBROK "cgroup_get_version: controller not defined"
[ "$_cgroup_state" ] || tst_brk TBROK "cgroup_get_version: No previous state found. Forgot to call cgroup_require?"
version=$(echo "$_cgroup_state" | grep -w "^$ctrl" | awk '{ print $2 }')
[ "$version" ] || tst_brk TBROK "cgroup_get_version: Could not find controller $ctrl"
echo "$version"
return 0
}
cgroup_cleanup()
{
[ "$_cgroup_state" ] || return 0
ROD tst_cgctl cleanup "$_cgroup_state"
_cgroup_state=
return 0
}
cgroup_get_task_list()
{
local ctrl="$1"
local version
[ "$ctrl" ] || tst_brk TBROK "cgroup_get_task_list: controller not defined"
version=$(cgroup_get_version "$ctrl")
if [ "$version" = "2" ]; then
echo "cgroup.procs"
else
echo "tasks"
fi
return 0
}
cgroup_require()
{
local ctrl="$1"
local ret
[ "$ctrl" ] || tst_brk TBROK "cgroup_require: controller not defined"
[ ! -f /proc/cgroups ] && tst_brk TCONF "Kernel does not support control groups"
_cgroup_state=$(tst_cgctl require "$ctrl" $$)
ret=$?
if [ $ret -eq 32 ]; then
tst_brk TCONF "'tst_cgctl require $ctrl' failed. $ctrl controller not available?"
return $ret
fi
if [ $ret -ne 0 ]; then
tst_brk TBROK "'tst_cgctl require $ctrl' failed. LTP missing $ctrl controller support?"
return $ret
fi
[ "$_cgroup_state" ] || tst_brk TBROK "cgroup_require: No state was set after call to tst_cgctl require?"
return 0
}
. tst_test.sh