Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/kselftest/module.sh
26285 views
1
#!/bin/sh
2
# SPDX-License-Identifier: GPL-2.0+
3
4
#
5
# Runs an individual test module.
6
#
7
# kselftest expects a separate executable for each test, this can be
8
# created by adding a script like this:
9
#
10
# #!/bin/sh
11
# SPDX-License-Identifier: GPL-2.0+
12
# $(dirname $0)/../kselftest/module.sh "description" module_name
13
#
14
# Example: tools/testing/selftests/lib/bitmap.sh
15
16
desc="" # Output prefix.
17
module="" # Filename (without the .ko).
18
args="" # modprobe arguments.
19
20
modprobe="/sbin/modprobe"
21
22
main() {
23
parse_args "$@"
24
assert_root
25
assert_have_module
26
run_module
27
}
28
29
parse_args() {
30
script=${0##*/}
31
32
if [ $# -lt 2 ]; then
33
echo "Usage: $script <description> <module_name> [FAIL]"
34
exit 1
35
fi
36
37
desc="$1"
38
shift || true
39
module="$1"
40
shift || true
41
args="$@"
42
}
43
44
assert_root() {
45
if [ ! -w /dev ]; then
46
skip "please run as root"
47
fi
48
}
49
50
assert_have_module() {
51
if ! $modprobe -q -n $module; then
52
skip "module $module is not found"
53
fi
54
}
55
56
run_module() {
57
if $modprobe -q $module $args; then
58
$modprobe -q -r $module
59
say "ok"
60
else
61
fail ""
62
fi
63
}
64
65
say() {
66
echo "$desc: $1"
67
}
68
69
70
fail() {
71
say "$1 [FAIL]" >&2
72
exit 1
73
}
74
75
skip() {
76
say "$1 [SKIP]" >&2
77
# Kselftest framework requirement - SKIP code is 4.
78
exit 4
79
}
80
81
#
82
# Main script
83
#
84
main "$@"
85
86