运行pintos时测试超时

运行pintos时测试超时,pintos,Pintos,我刚刚开始pintos项目,在我的家用电脑上运行Ubuntu14.04x64系统 我能够从src/threads/目录编译项目,并且初始测试pintos run alarm multiple似乎工作正常(注意,它默认运行qemu): 但是,当我在src/threads/build下运行make check时,所有测试都会出现超时错误: zay@ubuntu:~/Documents/pintos/src/threads/build$ make check pintos -v -k -T 60 --

我刚刚开始pintos项目,在我的家用电脑上运行Ubuntu14.04x64系统

我能够从
src/threads/
目录编译项目,并且初始测试
pintos run alarm multiple
似乎工作正常(注意,它默认运行qemu):

但是,当我在
src/threads/build
下运行
make check
时,所有测试都会出现超时错误:

zay@ubuntu:~/Documents/pintos/src/threads/build$ make check
pintos -v -k -T 60 --qemu  -- -q  run alarm-multiple < /dev/null 2> tests/threads/alarm-multiple.errors > tests/threads/alarm-multiple.output
perl -I../.. ../../tests/threads/alarm-multiple.ck tests/threads/alarm-multiple tests/threads/alarm-multiple.result
FAIL tests/threads/alarm-multiple
run: TIMEOUT after 61 seconds of wall-clock time - load average: 0.20, 0.45, 0.26
pintos -v -k -T 60 --qemu  -- -q  run alarm-simultaneous < /dev/null 2> tests/threads/alarm-simultaneous.errors > tests/threads/alarm-simultaneous.output
perl -I../.. ../../tests/threads/alarm-simultaneous.ck tests/threads/alarm-simultaneous tests/threads/alarm-simultaneous.result
FAIL tests/threads/alarm-simultaneous
run: TIMEOUT after 61 seconds of wall-clock time - load average: 0.18, 0.40, 0.25
pintos -v -k -T 60 --qemu  -- -q  run alarm-priority < /dev/null 2> tests/threads/alarm-priority.errors > tests/threads/alarm-priority.output
perl -I../.. ../../tests/threads/alarm-priority.ck tests/threads/alarm-priority tests/threads/alarm-priority.result
FAIL tests/threads/alarm-priority
run: TIMEOUT after 61 seconds of wall-clock time - load average: 0.10, 0.34, 0.2
zay@ubuntu:~/Documents/pintos/src/threads/build$make check
pintos-v-k-t60--qemu--q运行多线程报警测试/线程/alarm-multiple.errors>测试/线程/alarm-multiple.output
perl-I…/…//测试/threads/alarm-multiple.ck测试/threads/alarm-multiple测试/threads/alarm-multiple.result
失败测试/线程/多个报警
运行:挂钟时间达到61秒后超时-平均负载:0.20、0.45、0.26
pintos-v-k-t60--qemu--q同时运行报警测试/线程/alarm-synchronous.errors>测试/线程/alarm-synchronous.output
perl-I…/…//测试/threads/alarm-synchronized.ck测试/threads/alarm-synchronized测试/threads/alarm-synchronized.result
失败测试/线程/警报同步
运行:挂钟时间达到61秒后超时-平均负载:0.18、0.40、0.25
pintos-v-k-t60--qemu--q运行报警优先级测试/线程/alarm-priority.errors>测试/线程/alarm-priority.output
perl-I…/…//测试/threads/alarm-priority.ck测试/threads/alarm-priority测试/threads/alarm-priority.result
失败测试/线程/警报优先级
运行:挂钟时间达到61秒后超时-平均负载:0.10、0.34、0.2

我应该做什么改变来解决这个问题

显然,QEMU不再支持端口上的断电序列
0x8900
。下面是一个使它对我起作用的修复程序(在中找到):在文件
devices/shutdown.c
patch
shutdown\u power\u off
中,如下所示:

void
shutdown_power_off (void)
{
  // ...
  printf ("Powering off...\n");
  serial_flush ();
  outw (0xB004, 0x2000);  // <-- Add this line
  // ...
}
void
关闭电源(无效)
{
// ...
printf(“关闭电源…\n”);
串行_flush();

outw(0xB004,0x2000);//如果您对pinto使用qemu。 您需要在
devices/shutdown.c
中添加一行代码

插入行
out(0x604,0x0 | 0x2000);
printf(“断电…\n”);串行刷新()之后;
如下所示:

 /* This is a special power-off sequence supported by Bochs and
 QEMU, but not by physical hardware. */
 for (p = s; *p != '  printf ("Powering off...\n");
  serial_flush ();

//add the following line
outw( 0x604, 0x0 | 0x2000 );

跟随了解更多信息

根据我所见,这一行已包含在较新版本中;但我仍然会遇到相同的错误,虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面出现错误,则只有链接的答案可能无效恩格斯-
 /* This is a special power-off sequence supported by Bochs and
 QEMU, but not by physical hardware. */
 for (p = s; *p != '  printf ("Powering off...\n");
  serial_flush ();

//add the following line
outw( 0x604, 0x0 | 0x2000 );