AKTUALIZACJA:
Nowe rozwiązanie
Oto kolejny lepsze rozwiązanie, które będzie działać zarówno pintos run ...
i make grade
dodać tę linię do urządzenia/shutdown.c :: shutdown_power_off (void) przed pętli.
outw(0x604, 0x0 | 0x2000);
Stary Rozwiązanie
Dla nowszych wersjach qemu trzeba uruchomić go z opcją
-device isa-debug-exit
Które wyjście na każdym zapisie do portu IO, domyślnie jest to 0x501
tj. w swoim Pintos projekt pod/utils katalogu src trzeba dodać jedną linię do Pintos plik w run_qemu podprogram
sub run_qemu {
print "warning: qemu doesn't support --terminal\n"
if $vga eq 'terminal';
print "warning: qemu doesn't support jitter\n"
if defined $jitter;
my (@cmd) = ('qemu-system-i386');
push (@cmd, '-device', 'isa-debug-exit'); # <====== add this line
..
..
push (@cmd, '-monitor', 'null') if $vga eq 'none' && $debug eq 'none';
run_command (@cmd);
}
aw shutdown.c plików pod urządzenia katalog dodać tę linię w shutdown_power_off funkcji po pętli for
for (p = s; *p != '\0'; p++)
outb (0x8900, *p);
outb (0x501, 0x31); // <====== add this line
Kod wyjścia Qemu jest podwójną wartością plus jeden, więc nie ma sposobu na bezpieczne wyjście.Użyj 0x31, która powinna doprowadzić do kodu wyjścia qemu z 0x63
wreszcie uruchomić PINTOS z opcją -q
pintos -q run alarm-multiple
- Uwaga: to rozwiązanie nie będzie działać na
make grade
patrz komentarz poniżej @ pranav3688 dla rozwiązania.
Oznacza to, że 'pintOS' nie wychodzi poprawnie. Upewnij się, że poprawnie wychodzi, tzn. Wraca do rodzica. –
Chyba nie przeczytałeś poprawnie mojego problemu. Chcę, aby okno 'qemu' zamykało się automatycznie, nie ma problemu w' pintOS'. – Alfran