我想,可自动地打开和表示输出后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