Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/time/udelay_test.sh
26278 views
1
#!/bin/bash
2
# SPDX-License-Identifier: GPL-2.0-only
3
4
# udelay() test script
5
#
6
# Test is executed by writing and reading to /sys/kernel/debug/udelay_test
7
# and exercises a variety of delays to ensure that udelay() is delaying
8
# at least as long as requested (as compared to ktime).
9
#
10
# Copyright (C) 2014 Google, Inc.
11
#
12
13
MODULE_NAME=udelay_test
14
UDELAY_PATH=/sys/kernel/debug/udelay_test
15
16
setup()
17
{
18
/sbin/modprobe -q $MODULE_NAME
19
tmp_file=`mktemp`
20
}
21
22
test_one()
23
{
24
delay=$1
25
echo $delay > $UDELAY_PATH
26
tee -a $tmp_file < $UDELAY_PATH
27
}
28
29
cleanup()
30
{
31
if [ -f $tmp_file ]; then
32
rm $tmp_file
33
fi
34
/sbin/modprobe -q -r $MODULE_NAME
35
}
36
37
trap cleanup EXIT
38
setup
39
40
# Delay for a variety of times.
41
# 1..200, 200..500 (by 10), 500..2000 (by 100)
42
for (( delay = 1; delay < 200; delay += 1 )); do
43
test_one $delay
44
done
45
for (( delay = 200; delay < 500; delay += 10 )); do
46
test_one $delay
47
done
48
for (( delay = 500; delay <= 2000; delay += 100 )); do
49
test_one $delay
50
done
51
52
# Search for failures
53
count=`grep -c FAIL $tmp_file`
54
if [ $? -eq "0" ]; then
55
echo "ERROR: $count delays failed to delay long enough"
56
retcode=1
57
fi
58
59
exit $retcode
60
61