Skip to content

Commit 988b0c5

Browse files
David Rileyjohnstultz-work
authored andcommitted
tools: add script to test udelay
This script makes use of the udelay_test module to exercise udelay() and ensure that it is delaying long enough (as compared to ktime). Signed-off-by: David Riley <[email protected]> Signed-off-by: John Stultz <[email protected]>
1 parent e704f93 commit 988b0c5

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

tools/time/udelay_test.sh

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
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+
20+
MODULE_NAME=udelay_test
21+
UDELAY_PATH=/sys/kernel/debug/udelay_test
22+
23+
setup()
24+
{
25+
/sbin/modprobe -q $MODULE_NAME
26+
tmp_file=`mktemp`
27+
}
28+
29+
test_one()
30+
{
31+
delay=$1
32+
echo $delay > $UDELAY_PATH
33+
tee -a $tmp_file < $UDELAY_PATH
34+
}
35+
36+
cleanup()
37+
{
38+
if [ -f $tmp_file ]; then
39+
rm $tmp_file
40+
fi
41+
/sbin/modprobe -q -r $MODULE_NAME
42+
}
43+
44+
trap cleanup EXIT
45+
setup
46+
47+
# Delay for a variety of times.
48+
# 1..200, 200..500 (by 10), 500..2000 (by 100)
49+
for (( delay = 1; delay < 200; delay += 1 )); do
50+
test_one $delay
51+
done
52+
for (( delay = 200; delay < 500; delay += 10 )); do
53+
test_one $delay
54+
done
55+
for (( delay = 500; delay <= 2000; delay += 100 )); do
56+
test_one $delay
57+
done
58+
59+
# Search for failures
60+
count=`grep -c FAIL $tmp_file`
61+
if [ $? -eq "0" ]; then
62+
echo "ERROR: $count delays failed to delay long enough"
63+
retcode=1
64+
fi
65+
66+
exit $retcode

0 commit comments

Comments
 (0)