1 #!/bin/bash 1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0-only << 3 2 4 # udelay() test script 3 # udelay() test script 5 # 4 # 6 # Test is executed by writing and reading to / 5 # Test is executed by writing and reading to /sys/kernel/debug/udelay_test 7 # and exercises a variety of delays to ensure 6 # and exercises a variety of delays to ensure that udelay() is delaying 8 # at least as long as requested (as compared t 7 # at least as long as requested (as compared to ktime). 9 # 8 # 10 # Copyright (C) 2014 Google, Inc. 9 # Copyright (C) 2014 Google, Inc. 11 # 10 # >> 11 # This software is licensed under the terms of the GNU General Public >> 12 # License version 2, as published by the Free Software Foundation, and >> 13 # may be copied, distributed, and modified under those terms. >> 14 # >> 15 # This program is distributed in the hope that it will be useful, >> 16 # but WITHOUT ANY WARRANTY; without even the implied warranty of >> 17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> 18 # GNU General Public License for more details. 12 19 13 MODULE_NAME=udelay_test 20 MODULE_NAME=udelay_test 14 UDELAY_PATH=/sys/kernel/debug/udelay_test 21 UDELAY_PATH=/sys/kernel/debug/udelay_test 15 22 16 setup() 23 setup() 17 { 24 { 18 /sbin/modprobe -q $MODULE_NAME 25 /sbin/modprobe -q $MODULE_NAME 19 tmp_file=`mktemp` 26 tmp_file=`mktemp` 20 } 27 } 21 28 22 test_one() 29 test_one() 23 { 30 { 24 delay=$1 31 delay=$1 25 echo $delay > $UDELAY_PATH 32 echo $delay > $UDELAY_PATH 26 tee -a $tmp_file < $UDELAY_PATH 33 tee -a $tmp_file < $UDELAY_PATH 27 } 34 } 28 35 29 cleanup() 36 cleanup() 30 { 37 { 31 if [ -f $tmp_file ]; then 38 if [ -f $tmp_file ]; then 32 rm $tmp_file 39 rm $tmp_file 33 fi 40 fi 34 /sbin/modprobe -q -r $MODULE_NAME 41 /sbin/modprobe -q -r $MODULE_NAME 35 } 42 } 36 43 37 trap cleanup EXIT 44 trap cleanup EXIT 38 setup 45 setup 39 46 40 # Delay for a variety of times. 47 # Delay for a variety of times. 41 # 1..200, 200..500 (by 10), 500..2000 (by 100) 48 # 1..200, 200..500 (by 10), 500..2000 (by 100) 42 for (( delay = 1; delay < 200; delay += 1 )); 49 for (( delay = 1; delay < 200; delay += 1 )); do 43 test_one $delay 50 test_one $delay 44 done 51 done 45 for (( delay = 200; delay < 500; delay += 10 ) 52 for (( delay = 200; delay < 500; delay += 10 )); do 46 test_one $delay 53 test_one $delay 47 done 54 done 48 for (( delay = 500; delay <= 2000; delay += 10 55 for (( delay = 500; delay <= 2000; delay += 100 )); do 49 test_one $delay 56 test_one $delay 50 done 57 done 51 58 52 # Search for failures 59 # Search for failures 53 count=`grep -c FAIL $tmp_file` 60 count=`grep -c FAIL $tmp_file` 54 if [ $? -eq "0" ]; then 61 if [ $? -eq "0" ]; then 55 echo "ERROR: $count delays failed to d 62 echo "ERROR: $count delays failed to delay long enough" 56 retcode=1 63 retcode=1 57 fi 64 fi 58 65 59 exit $retcode 66 exit $retcode
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.