Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0-only
0003 
0004 # udelay() test script
0005 #
0006 # Test is executed by writing and reading to /sys/kernel/debug/udelay_test
0007 # and exercises a variety of delays to ensure that udelay() is delaying
0008 # at least as long as requested (as compared to ktime).
0009 #
0010 # Copyright (C) 2014 Google, Inc.
0011 #
0012 
0013 MODULE_NAME=udelay_test
0014 UDELAY_PATH=/sys/kernel/debug/udelay_test
0015 
0016 setup()
0017 {
0018         /sbin/modprobe -q $MODULE_NAME
0019         tmp_file=`mktemp`
0020 }
0021 
0022 test_one()
0023 {
0024         delay=$1
0025         echo $delay > $UDELAY_PATH
0026         tee -a $tmp_file < $UDELAY_PATH
0027 }
0028 
0029 cleanup()
0030 {
0031         if [ -f $tmp_file ]; then
0032                 rm $tmp_file
0033         fi
0034         /sbin/modprobe -q -r $MODULE_NAME
0035 }
0036 
0037 trap cleanup EXIT
0038 setup
0039 
0040 # Delay for a variety of times.
0041 # 1..200, 200..500 (by 10), 500..2000 (by 100)
0042 for (( delay = 1; delay < 200; delay += 1 )); do
0043         test_one $delay
0044 done
0045 for (( delay = 200; delay < 500; delay += 10 )); do
0046         test_one $delay
0047 done
0048 for (( delay = 500; delay <= 2000; delay += 100 )); do
0049         test_one $delay
0050 done
0051 
0052 # Search for failures
0053 count=`grep -c FAIL $tmp_file`
0054 if [ $? -eq "0" ]; then
0055         echo "ERROR: $count delays failed to delay long enough"
0056         retcode=1
0057 fi
0058 
0059 exit $retcode