#!/bin/bash # SPDX-License-Identifier: GPL-2.0 # # Basc test for cpuset v1 interfaces write/read # skip_test() { echo "$1" echo "Test SKIPPED" exit 4 # ksft_skip } write_test() { dir=$1 interface=$2 value=$3 original=$(cat $dir/$interface) echo "testing $interface $value" echo $value > $dir/$interface new=$(cat $dir/$interface) [[ $value -ne $(cat $dir/$interface) ]] && { echo "$interface write $value failed: new:$new" exit 1 } } [[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!" # Find cpuset v1 mount point CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk '{print $3}') [[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!" # # Create a test cpuset, read write test # TDIR=test$$ [[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR ITF_MATRIX=( #interface value expect root_only 'cpuset.cpus 0-1 0-1 0' 'cpuset.mem_exclusive 1 1 0' 'cpuset.mem_exclusive 0 0 0' 'cpuset.mem_hardwall 1 1 0' 'cpuset.mem_hardwall 0 0 0' 'cpuset.memory_migrate 1 1 0' 'cpuset.memory_migrate 0 0 0' 'cpuset.memory_spread_page 1 1 0' 'cpuset.memory_spread_page 0 0 0' 'cpuset.memory_spread_slab 1 1 0' 'cpuset.memory_spread_slab 0 0 0' 'cpuset.mems 0 0 0' 'cpuset.sched_load_balance 1 1 0' 'cpuset.sched_load_balance 0 0 0' 'cpuset.sched_relax_domain_level 2 2 0' 'cpuset.memory_pressure_enabled 1 1 1' 'cpuset.memory_pressure_enabled 0 0 1' ) run_test() { cnt="${ITF_MATRIX[@]}" for i in "${ITF_MATRIX[@]}" ; do args=($i) root_only=${args[3]} [[ $root_only -eq 1 ]] && { write_test "$CPUSET" "${args[0]}" "${args[1]}" "${args[2]}" continue } write_test "$CPUSET/$TDIR" "${args[0]}" "${args[1]}" "${args[2]}" done } run_test rmdir $CPUSET/$TDIR echo "Test PASSED" exit 0