78 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Basc test for cpuset v1 interfaces write/read5#6 7skip_test() {8 echo "$1"9 echo "Test SKIPPED"10 exit 4 # ksft_skip11}12 13write_test() {14 dir=$115 interface=$216 value=$317 original=$(cat $dir/$interface)18 echo "testing $interface $value"19 echo $value > $dir/$interface20 new=$(cat $dir/$interface)21 [[ $value -ne $(cat $dir/$interface) ]] && {22 echo "$interface write $value failed: new:$new"23 exit 124 }25}26 27[[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!"28 29# Find cpuset v1 mount point30CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk '{print $3}')31[[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!"32 33#34# Create a test cpuset, read write test35#36TDIR=test$$37[[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR38 39ITF_MATRIX=(40 #interface value expect root_only41 'cpuset.cpus 0-1 0-1 0'42 'cpuset.mem_exclusive 1 1 0'43 'cpuset.mem_exclusive 0 0 0'44 'cpuset.mem_hardwall 1 1 0'45 'cpuset.mem_hardwall 0 0 0'46 'cpuset.memory_migrate 1 1 0'47 'cpuset.memory_migrate 0 0 0'48 'cpuset.memory_spread_page 1 1 0'49 'cpuset.memory_spread_page 0 0 0'50 'cpuset.memory_spread_slab 1 1 0'51 'cpuset.memory_spread_slab 0 0 0'52 'cpuset.mems 0 0 0'53 'cpuset.sched_load_balance 1 1 0'54 'cpuset.sched_load_balance 0 0 0'55 'cpuset.sched_relax_domain_level 2 2 0'56 'cpuset.memory_pressure_enabled 1 1 1'57 'cpuset.memory_pressure_enabled 0 0 1'58)59 60run_test()61{62 cnt="${ITF_MATRIX[@]}"63 for i in "${ITF_MATRIX[@]}" ; do64 args=($i)65 root_only=${args[3]}66 [[ $root_only -eq 1 ]] && {67 write_test "$CPUSET" "${args[0]}" "${args[1]}" "${args[2]}"68 continue69 }70 write_test "$CPUSET/$TDIR" "${args[0]}" "${args[1]}" "${args[2]}"71 done72}73 74run_test75rmdir $CPUSET/$TDIR76echo "Test PASSED"77exit 078