projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rename do_power_off to power_off_when_done.
[pintos-anon]
/
src
/
utils
/
pintos
diff --git
a/src/utils/pintos
b/src/utils/pintos
index a27384ddf3f01cf1a7d74fdb6187756e92ec1a07..9b3d0e7adecc1a5d29b21bacf270e1add5233b16 100755
(executable)
--- a/
src/utils/pintos
+++ b/
src/utils/pintos
@@
-73,7
+73,7
@@
die "no command specified; use --help for help\n"
if @ARGV < 1;
my ($cmd) = shift @ARGV;
if ($cmd eq 'run') {
if @ARGV < 1;
my ($cmd) = shift @ARGV;
if ($cmd eq 'run') {
- run_vm (@ARGV);
+ run_vm (
'EXEC',
@ARGV);
} elsif ($cmd eq 'make-disk') {
usage () if @ARGV != 2;
my ($file, $mb) = @ARGV;
} elsif ($cmd eq 'make-disk') {
usage () if @ARGV != 2;
my ($file, $mb) = @ARGV;
@@
-101,7
+101,7
@@
if ($cmd eq 'run') {
# Do copy.
my (@cmd) = ("-ci", $guestfn, $size, "-q");
unshift (@cmd, "-f") if $format;
# Do copy.
my (@cmd) = ("-ci", $guestfn, $size, "-q");
unshift (@cmd, "-f") if $format;
- run_vm (@cmd);
+ run_vm (
'EXEC',
@cmd);
} elsif ($cmd eq 'get') {
usage () if @ARGV != 1 && @ARGV != 2;
my ($guestfn, $hostfn) = @ARGV;
} elsif ($cmd eq 'get') {
usage () if @ARGV != 1 && @ARGV != 2;
my ($guestfn, $hostfn) = @ARGV;
@@
-118,7
+118,7
@@
if ($cmd eq 'run') {
if $scratch_size < $fs_size + 16384;
# Do copy.
if $scratch_size < $fs_size + 16384;
# Do copy.
- run_vm ("-co", $guestfn, "-q");
+ run_vm (
'FORK',
"-co", $guestfn, "-q");
# Read out scratch disk.
print "copying $guestfn from $disks[2] to $hostfn...\n";
# Read out scratch disk.
print "copying $guestfn from $disks[2] to $hostfn...\n";
@@
-126,7
+126,7
@@
if ($cmd eq 'run') {
open (DST, ">$hostfn") or die "$hostfn: create: $!\n";
my ($input);
read (SRC, $input, 512) == 512 or die "$disks[2]: read error\n";
open (DST, ">$hostfn") or die "$hostfn: create: $!\n";
my ($input);
read (SRC, $input, 512) == 512 or die "$disks[2]: read error\n";
- my ($size) = unpack ("
%
V", $input);
+ my ($size) = unpack ("V", $input);
$size != 0xffffffff or die "$guestfn: too big for $disks[2]?";
my ($src);
read (SRC, $src, $size) == $size or die "$disks[2]: read error\n";
$size != 0xffffffff or die "$guestfn: too big for $disks[2]?";
my ($src);
read (SRC, $src, $size) == $size or die "$disks[2]: read error\n";
@@
-185,6
+185,9
@@
sub create_disk {
}
sub run_vm {
}
sub run_vm {
+ my ($fork) = shift;
+ $fork eq 'FORK' || $fork eq 'EXEC' or die;
+
our (@disks);
die "$disks[0]: can't find OS disk\n" if ! -e $disks[0];
our (@disks);
die "$disks[0]: can't find OS disk\n" if ! -e $disks[0];
@@
-234,7
+237,8
@@
sub run_vm {
my (@cmd) = ($bin, '-q');
push (@cmd, '-j', $jitter) if defined $jitter;
my (@cmd) = ($bin, '-q');
push (@cmd, '-j', $jitter) if defined $jitter;
- run_command_no_die (@cmd);
+ print join (' ', @cmd), "\n";
+ $fork eq 'EXEC' ? exec (@cmd) : system (@cmd);
} elsif ($sim eq 'qemu') {
print "warning: qemu doesn't support --terminal\n"
if $vga eq 'terminal';
} elsif ($sim eq 'qemu') {
print "warning: qemu doesn't support --terminal\n"
if $vga eq 'terminal';
@@
-329,11
+333,6
@@
sub run_command {
die "command failed\n" if system (@_);
}
die "command failed\n" if system (@_);
}
-sub run_command_no_die {
- print join (' ', @_), "\n";
- system (@_);
-}
-
sub search_path {
my ($target) = @_;
for my $dir (split (':', $ENV{PATH})) {
sub search_path {
my ($target) = @_;
for my $dir (split (':', $ENV{PATH})) {