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


Quelle  kvm-transform.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0+
#
# Transform a qemu-cmd file to allow reuse.
#
# Usage: kvm-transform.sh bzImage console.log jitter_dir seconds [ bootargs ] < qemu-cmd-in > qemu-cmd-out
#
# bzImage: Kernel and initrd from the same prior kvm.sh run.
# console.log: File into which to place console output.
# jitter_dir: Jitter directory for TORTURE_JITTER_START and
# TORTURE_JITTER_STOP environment variables.
# seconds: Run duaration for *.shutdown_secs module parameter.
# bootargs: New kernel boot parameters.  Beware of Robert Tables.
#
# The original qemu-cmd file is provided on standard input.
# The transformed qemu-cmd file is on standard output.
# The transformation assumes that the qemu command is confined to a
# single line.  It also assumes no whitespace in filenames.
#
# Copyright (C) 2020 Facebook, Inc.
#
# Authors: Paul E. McKenney <paulmck@kernel.org>

T=`mktemp -d /tmp/kvm-transform.sh.XXXXXXXXXX`
trap 'rm -rf $T' 0 2

image="$1"
if test -z "$image"
then
 echo Need kernel image file.
 exit 1
fi
consolelog="$2"
if test -z "$consolelog"
then
 echo "Need console log file name."
 exit 1
fi
jitter_dir="$3"
if test -z "$jitter_dir" || ! test -d "$jitter_dir"
then
 echo "Need valid jitter directory: '$jitter_dir'"
 exit 1
fi
seconds="$4"
if test -n "$seconds" && echo $seconds | grep -q '[^0-9]'
then
 echo "Invalid duration, should be numeric in seconds: '$seconds'"
 exit 1
fi
bootargs="$5"

# Build awk program.
echo "BEGIN {" > $T/bootarg.awk
echo $bootargs | tr -s ' ' '\012' |
 awk -v dq='"' '/./ { print "\tbootarg[" NR "] = " dq $1 dq ";" }' >> $T/bootarg.awk
echo $bootargs | tr -s ' ' '\012' | sed -e 's/=.*$//' |
 awk -v dq='"' '/./ { print "\tbootpar[" NR "] = " dq $1 dq ";" }' >> $T/bootarg.awk
cat >> $T/bootarg.awk << '___EOF___'
}

/^# seconds=/ {
 if (seconds == "")
  print $0;
 else
  print "# seconds=" seconds;
 next;
}

/^# TORTURE_JITTER_START=/ {
 print "# TORTURE_JITTER_START=\". jitterstart.sh " $4 " " jitter_dir " " $6 " " $7;
 next;
}

/^# TORTURE_JITTER_STOP=/ {
 print "# TORTURE_JITTER_STOP=\". jitterstop.sh " " " jitter_dir " " $5;
 next;
}

/^#/ {
 print $0;
 next;
}

{
 line = "";
 for (i = 1; i <= NF; i++) {
  if (line == "") {
   line = $i;
  } else {
   line = line " " $i;
  }
  if ($i == "-serial") {
   i++;
   line = line " file:" consolelog;
  } else if ($i == "-kernel") {
   i++;
   line = line " " image;
  } else if ($i == "-append") {
   for (i++; i <= NF; i++) {
    arg = $i;
    lq = "";
    rq = "";
    if ("" seconds != "" && $i ~ /\.shutdown_secs=[0-9]*$/)
     sub(/[0-9]*$/, seconds, arg);
    if (arg ~ /^"/) {
     lq = substr(arg, 1, 1);
     arg  = substr(arg, 2);
    }
    if (arg ~ /"$/) {
     rq = substr(arg, length($i), 1);
     arg = substr(arg, 1, length($i) - 1);
    }
    par = arg;
    gsub(/=.*$/, "", par);
    j = 1;
    while (bootpar[j] != "") {
     if (bootpar[j] == par) {
      arg = "";
      break;
     }
     j++;
    }
    if (line == "")
     line = lq arg;
    else
     line = line " " lq arg;
   }
   for (j in bootarg)
    line = line " " bootarg[j];
   line = line rq;
  }
 }
 print line;
}
___EOF___

awk -v image="$image" -v consolelog="$consolelog" -v jitter_dir="$jitter_dir" \
    -v seconds="$seconds" -f $T/bootarg.awk

Messung V0.5
C=98 H=81 G=89

¤ Dauer der Verarbeitung: 0.0 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