我想,可自動地打開和表示輸出後qemu
窗口,當我在tcsh
殼運行命令pintos -- run alarm-multiple
運行pintOS
如何在進程結束後自動關閉`qemu`的執行?
像後關閉,QEMU顯示過程開始,那麼一些alarm-notifications
然後過程結束,但之後qemu窗口將不會關閉
我想成功完成我的系統調用後退出窗口。
我想,可自動地打開和表示輸出後qemu
窗口,當我在tcsh
殼運行命令pintos -- run alarm-multiple
運行pintOS
如何在進程結束後自動關閉`qemu`的執行?
像後關閉,QEMU顯示過程開始,那麼一些alarm-notifications
然後過程結束,但之後qemu窗口將不會關閉
我想成功完成我的系統調用後退出窗口。
更新:
新的解決方案
這裏是另外一個更好的解決方案,將兩個pintos run ...
和make grade
工作,加入這一行devices/shutdown.c :: shutdown_power_off(void)循環之前。
outw(0x604, 0x0 | 0x2000);
這個老辦法
對於需要使用選項
-device isa-debug-exit
任何寫一個退出到一個IO端口運行QEMU的更新版本,默認情況下它是0x501
ie在pintos的的src/utils的目錄下項目,將需要添加一行到pintos文件中的run_qemu子程序
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);
}
和shutdown.c下文件設備目錄 在for循環後添加此行shutdown_power_off函數
for (p = s; *p != '\0'; p++)
outb (0x8900, *p);
outb (0x501, 0x31); // <====== add this line
Qemu的退出代碼是值加1的兩倍,因此無法完全退出。使用0X31這將導致在0x63
最後用-q選項運行pintos一個QEMU退出代碼
pintos -q run alarm-multiple
make grade
看到下面的評論通過@ pranav3688尋求解決方案。這可以在一般情況下使用,但是當使用'qemu'執行'make grade'時會失敗,因爲它需要一個乾淨的退出(返回代碼= 0而不是0x63)....爲了解決這個問題,修改了子系統的第896行'pintos腳本從'return $?'返回0'(返回0x63) – pranav3688
是的,你是對的。實際上,我還發現了另一個解決方案,而不是我寫的,你可以在循環之前在/shutdown.c:shutdown_power_off(void)中添加這一行=> outw(0x604,0x0 | 0x2000); ** 。 告訴我,如果這也可以,我會更新這兩個解決方案的帖子。 – yakout
是啊,這也適用於'製作等級'!謝謝! – pranav3688
這表明你的'pintOS'不能正常退出。確保它正確退出,即返回到它的父母。 –
我猜你沒有正確閱讀我的問題。我想'qemu'窗口自動關閉,'pintOS'沒有問題。 – Alfran