X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Futils%2Fpintos;fp=src%2Futils%2Fpintos;h=c30633c93de2b9b175fb898c709ffb287c61208d;hb=837e5b7fb902bd749106309ef76a5276c73ca34c;hp=ccf10377641baf04ee31ad679e4df626b8f16dcc;hpb=58b5b585e7efb4ce7ffc3d7374fb9f5afc601a0f;p=pintos-anon diff --git a/src/utils/pintos b/src/utils/pintos index ccf1037..c30633c 100755 --- a/src/utils/pintos +++ b/src/utils/pintos @@ -11,7 +11,7 @@ our ($start_time) = time (); our ($sim); # Simulator: bochs, qemu, or gsx. our ($debug) = "none"; # Debugger: none, monitor, or gdb. our ($mem) = 4; # Physical RAM in MB. -our ($serial_out) = 1; # Send output to serial port? +our ($serial) = 1; # Use serial port for input and output? our ($vga); # VGA output: window, terminal, or none. our ($jitter); # Seed for random timer interrupts, if set. our ($realtime); # Synchronize timer interrupts with real time? @@ -64,7 +64,7 @@ sub parse_command_line { "k|kill-on-failure" => \$kill_on_failure, "v|no-vga" => sub { set_vga ('none'); }, - "s|no-serial" => sub { $serial_out = 0; }, + "s|no-serial" => sub { $serial = 0; }, "t|terminal" => sub { set_vga ('terminal'); }, "p|put-file=s" => sub { add_file (\@puts, $_[1]); }, @@ -92,8 +92,8 @@ sub parse_command_line { undef $timeout, print "warning: disabling timeout with --$debug\n" if defined ($timeout) && $debug ne 'none'; - print "warning: enabling serial output for -k or --kill-on-failure\n" - if $kill_on_failure && !$serial_out; + print "warning: enabling serial port for -k or --kill-on-failure\n" + if $kill_on_failure && !$serial; } # usage($exitcode). @@ -115,8 +115,8 @@ Debugger selection: --monitor Debug with simulator's monitor --gdb Debug with gdb Display options: (default is both VGA and serial) - -v, --no-vga No VGA display - -s, --no-serial No serial output + -v, --no-vga No VGA display or keyboard + -s, --no-serial No serial input or output -t, --terminal Display VGA in terminal (Bochs only) Timing options: (Bochs only) -j SEED Randomize timer interrupts @@ -378,6 +378,15 @@ sub run_bochs { # Select Bochs binary based on the chosen debugger. my ($bin) = $debug eq 'monitor' ? 'bochs-dbg' : 'bochs'; + my ($squish_pty); + if ($serial) { + for my $dir (split (':', $ENV{PATH})) { + $squish_pty = "$dir/squish-pty", last if -x "$dir/squish-pty"; + } + print "warning: can't find squish-pty, so terminal input will fail\n" + if !defined $squish_pty; + } + # Write bochsrc.txt configuration file. open (BOCHSRC, ">", "bochsrc.txt") or die "bochsrc.txt: create: $!\n"; print BOCHSRC <