1#!/bin/bash 2 3# udelay() test script 4# 5# Test is executed by writing and reading to /sys/kernel/debug/udelay_test 6# and exercises a variety of delays to ensure that udelay() is delaying 7# at least as long as requested (as compared to ktime). 8# 9# Copyright (C) 2014 Google, Inc. 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. 19 20MODULE_NAME=udelay_test 21UDELAY_PATH=/sys/kernel/debug/udelay_test 22 23setup() 24{ 25 /sbin/modprobe -q $MODULE_NAME 26 tmp_file=`mktemp` 27} 28 29test_one() 30{ 31 delay=$1 32 echo $delay > $UDELAY_PATH 33 tee -a $tmp_file < $UDELAY_PATH 34} 35 36cleanup() 37{ 38 if [ -f $tmp_file ]; then 39 rm $tmp_file 40 fi 41 /sbin/modprobe -q -r $MODULE_NAME 42} 43 44trap cleanup EXIT 45setup 46 47# Delay for a variety of times. 48# 1..200, 200..500 (by 10), 500..2000 (by 100) 49for (( delay = 1; delay < 200; delay += 1 )); do 50 test_one $delay 51done 52for (( delay = 200; delay < 500; delay += 10 )); do 53 test_one $delay 54done 55for (( delay = 500; delay <= 2000; delay += 100 )); do 56 test_one $delay 57done 58 59# Search for failures 60count=`grep -c FAIL $tmp_file` 61if [ $? -eq "0" ]; then 62 echo "ERROR: $count delays failed to delay long enough" 63 retcode=1 64fi 65 66exit $retcode 67