cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

module.sh (1320B)


      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/printf.sh
     15
     16desc=""				# Output prefix.
     17module=""			# Filename (without the .ko).
     18args=""				# modprobe arguments.
     19
     20modprobe="/sbin/modprobe"
     21
     22main() {
     23    parse_args "$@"
     24    assert_root
     25    assert_have_module
     26    run_module
     27}
     28
     29parse_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
     44assert_root() {
     45    if [ ! -w /dev ]; then
     46	skip "please run as root"
     47    fi
     48}
     49
     50assert_have_module() {
     51    if ! $modprobe -q -n $module; then
     52	skip "module $module is not found"
     53    fi
     54}
     55
     56run_module() {
     57    if $modprobe -q $module $args; then
     58	$modprobe -q -r $module
     59	say "ok"
     60    else
     61	fail ""
     62    fi
     63}
     64
     65say() {
     66    echo "$desc: $1"
     67}
     68
     69
     70fail() {
     71    say "$1 [FAIL]" >&2
     72    exit 1
     73}
     74
     75skip() {
     76    say "$1 [SKIP]" >&2
     77    # Kselftest framework requirement - SKIP code is 4.
     78    exit 4
     79}
     80
     81#
     82# Main script
     83#
     84main "$@"