forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.1 KiB
59 lines
1.1 KiB
#!/bin/bash |
|
# SPDX-License-Identifier: GPL-2.0-only |
|
|
|
# udelay() test script |
|
# |
|
# Test is executed by writing and reading to /sys/kernel/debug/udelay_test |
|
# and exercises a variety of delays to ensure that udelay() is delaying |
|
# at least as long as requested (as compared to ktime). |
|
# |
|
# Copyright (C) 2014 Google, Inc. |
|
# |
|
|
|
MODULE_NAME=udelay_test |
|
UDELAY_PATH=/sys/kernel/debug/udelay_test |
|
|
|
setup() |
|
{ |
|
/sbin/modprobe -q $MODULE_NAME |
|
tmp_file=`mktemp` |
|
} |
|
|
|
test_one() |
|
{ |
|
delay=$1 |
|
echo $delay > $UDELAY_PATH |
|
tee -a $tmp_file < $UDELAY_PATH |
|
} |
|
|
|
cleanup() |
|
{ |
|
if [ -f $tmp_file ]; then |
|
rm $tmp_file |
|
fi |
|
/sbin/modprobe -q -r $MODULE_NAME |
|
} |
|
|
|
trap cleanup EXIT |
|
setup |
|
|
|
# Delay for a variety of times. |
|
# 1..200, 200..500 (by 10), 500..2000 (by 100) |
|
for (( delay = 1; delay < 200; delay += 1 )); do |
|
test_one $delay |
|
done |
|
for (( delay = 200; delay < 500; delay += 10 )); do |
|
test_one $delay |
|
done |
|
for (( delay = 500; delay <= 2000; delay += 100 )); do |
|
test_one $delay |
|
done |
|
|
|
# Search for failures |
|
count=`grep -c FAIL $tmp_file` |
|
if [ $? -eq "0" ]; then |
|
echo "ERROR: $count delays failed to delay long enough" |
|
retcode=1 |
|
fi |
|
|
|
exit $retcode
|
|
|