123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/bin/sh
- # SPDX-License-Identifier: GPL-2.0+
- #
- # Runs an individual test module.
- #
- # kselftest expects a separate executable for each test, this can be
- # created by adding a script like this:
- #
- # #!/bin/sh
- # SPDX-License-Identifier: GPL-2.0+
- # $(dirname $0)/../kselftest/module.sh "description" module_name
- #
- # Example: tools/testing/selftests/lib/printf.sh
- desc="" # Output prefix.
- module="" # Filename (without the .ko).
- args="" # modprobe arguments.
- modprobe="/sbin/modprobe"
- main() {
- parse_args "$@"
- assert_root
- assert_have_module
- run_module
- }
- parse_args() {
- script=${0##*/}
- if [ $# -lt 2 ]; then
- echo "Usage: $script <description> <module_name> [FAIL]"
- exit 1
- fi
- desc="$1"
- shift || true
- module="$1"
- shift || true
- args="$@"
- }
- assert_root() {
- if [ ! -w /dev ]; then
- skip "please run as root"
- fi
- }
- assert_have_module() {
- if ! $modprobe -q -n $module; then
- skip "module $module is not found"
- fi
- }
- run_module() {
- if $modprobe -q $module $args; then
- $modprobe -q -r $module
- say "ok"
- else
- fail ""
- fi
- }
- say() {
- echo "$desc: $1"
- }
- fail() {
- say "$1 [FAIL]" >&2
- exit 1
- }
- skip() {
- say "$1 [SKIP]" >&2
- # Kselftest framework requirement - SKIP code is 4.
- exit 4
- }
- #
- # Main script
- #
- main "$@"
|