94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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 ] < 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.
 | |
| #
 | |
| # 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>
 | |
| 
 | |
| 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
 | |
| 
 | |
| awk -v image="$image" -v consolelog="$consolelog" -v jitter_dir="$jitter_dir" \
 | |
|     -v seconds="$seconds" '
 | |
| /^# 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 ("" seconds != "" && $i ~ /\.shutdown_secs=[0-9]*$/) {
 | |
| 			sub(/[0-9]*$/, seconds, $i);
 | |
| 			if (line == "")
 | |
| 				line = $i;
 | |
| 			else
 | |
| 				line = line " " $i;
 | |
| 		} else if (line == "") {
 | |
| 			line = $i;
 | |
| 		} else {
 | |
| 			line = line " " $i;
 | |
| 		}
 | |
| 		if ($i == "-serial") {
 | |
| 			i++;
 | |
| 			line = line " file:" consolelog;
 | |
| 		} else if ($i == "-kernel") {
 | |
| 			i++;
 | |
| 			line = line " " image;
 | |
| 		}
 | |
| 	}
 | |
| 	print line;
 | |
| }'
 |