Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  main.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

source cpu.sh
source cpufreq.sh
source governor.sh
source module.sh
source special-tests.sh

DIR="$(dirname $(readlink -f "$0"))"
source "${DIR}"/../kselftest/ktap_helpers.sh

FUNC=basic # do basic tests by default
OUTFILE=cpufreq_selftest
SYSFS=
CPUROOT=
CPUFREQROOT=

helpme()
{
 printf "Usage: $0 [-h] [-todg args]
 [-h <help>]
 [-o <output-file-for-dump>]
 [-t <basic: Basic cpufreq testing
      suspend: suspend/resume,
      hibernate: hibernate/resume,
      suspend_rtc: suspend/resume back using the RTC wakeup alarm,
      hibernate_rtc: hibernate/resume back using the RTC wakeup alarm,
      modtest: test driver or governor modules. Only to be used with -d or -g options,
      sptest1: Simple governor switch to produce lockdep.
      sptest2: Concurrent governor switch to produce lockdep.
      sptest3: Governor races, shuffle between governors quickly.
      sptest4: CPU hotplugs with updates to cpufreq files.>]
 [-d <driver's module name: only with \"-t modtest>\"]
 [-g <governor's module name: only with \"-t modtest>\"]
 \n"
 exit "${KSFT_FAIL}"
}

prerequisite()
{
 msg="skip all tests:"

 if [ $UID != 0 ]; then
  ktap_skip_all "$msg must be run as root"
  exit "${KSFT_SKIP}"
 fi

 taskset -p 01 $$

 SYSFS=`mount -t sysfs | head -1 | awk '{ print $3 }'`

 if [ ! -d "$SYSFS" ]; then
  ktap_skip_all "$msg sysfs is not mounted"
  exit "${KSFT_SKIP}"
 fi

 CPUROOT=$SYSFS/devices/system/cpu
 CPUFREQROOT="$CPUROOT/cpufreq"

 if ! ls $CPUROOT/cpu* > /dev/null 2>&1; then
  ktap_skip_all "$msg cpus not available in sysfs"
  exit "${KSFT_SKIP}"
 fi

 if ! ls $CPUROOT/cpufreq > /dev/null 2>&1; then
  ktap_skip_all "$msg cpufreq directory not available in sysfs"
  exit "${KSFT_SKIP}"
 fi
}

parse_arguments()
{
 while getopts ht:o:d:g: arg
 do
  case $arg in
   h) # --help
    helpme
    ;;

   t) # --func_type (Function to perform: basic, suspend, hibernate,
      # suspend_rtc, hibernate_rtc, modtest, sptest1/2/3/4 (default: basic))
    FUNC=$OPTARG
    ;;

   o) # --output-file (Output file to store dumps)
    OUTFILE=$OPTARG
    ;;

   d) # --driver-mod-name (Name of the driver module)
    DRIVER_MOD=$OPTARG
    ;;

   g) # --governor-mod-name (Name of the governor module)
    GOVERNOR_MOD=$OPTARG
    ;;

   \?)
    helpme
    ;;
  esac
 done
}

do_test()
{
 # Check if CPUs are managed by cpufreq or not
 count=$(count_cpufreq_managed_cpus)

 if [ $count = 0 -a $FUNC != "modtest" ]; then
  ktap_exit_fail_msg "No cpu is managed by cpufreq core, exiting"
 fi

 case "$FUNC" in
  "basic")
  cpufreq_basic_tests
  ;;

  "suspend")
  do_suspend "suspend" 1
  ;;

  "hibernate")
  do_suspend "hibernate" 1
  ;;

  "suspend_rtc")
                do_suspend "suspend" 1 rtc
                ;;

                "hibernate_rtc")
                do_suspend "hibernate" 1 rtc
                ;;

  "modtest")
  # Do we have modules in place?
  if [ -z $DRIVER_MOD ] && [ -z $GOVERNOR_MOD ]; then
   ktap_exit_fail_msg "No driver or governor module passed with -d or -g"
  fi

  if [ $DRIVER_MOD ]; then
   if [ $GOVERNOR_MOD ]; then
    module_test $DRIVER_MOD $GOVERNOR_MOD
   else
    module_driver_test $DRIVER_MOD
   fi
  else
   if [ $count = 0 ]; then
    ktap_exit_fail_msg "No cpu is managed by cpufreq core, exiting"
   fi

   module_governor_test $GOVERNOR_MOD
  fi
  ;;

  "sptest1")
  simple_lockdep
  ;;

  "sptest2")
  concurrent_lockdep
  ;;

  "sptest3")
  governor_race
  ;;

  "sptest4")
  hotplug_with_updates
  ;;

  *)
  ktap_print_msg "Invalid [-f] function type"
  helpme
  ;;
 esac
}

# clear dumps
# $1: file name
clear_dumps()
{
 echo "" > $1.txt
 echo "" > $1.dmesg_cpufreq.txt
 echo "" > $1.dmesg_full.txt
}

# $1: output file name
dmesg_dumps()
{
 dmesg | grep cpufreq >> $1.dmesg_cpufreq.txt

 # We may need the full logs as well
 dmesg >> $1.dmesg_full.txt
}

ktap_print_header

# Parse arguments
parse_arguments $@

ktap_set_plan 1

# Make sure all requirements are met
prerequisite

# Run requested functions
clear_dumps $OUTFILE
do_test | tee -a $OUTFILE.txt
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
    exit ${PIPESTATUS[0]};
fi
dmesg_dumps $OUTFILE

ktap_test_pass "Completed successfully"

ktap_print_totals
exit "${KSFT_PASS}"

Messung V0.5
C=92 H=95 G=93

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge