首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行pintos时测试中的超时

运行pintos时测试中的超时
EN

Stack Overflow用户
提问于 2016-10-01 18:59:53
回答 2查看 2.6K关注 0票数 1

我刚刚开始使用pintos项目,在运行ubuntu14.04 x64系统的家用电脑上工作。

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

代码语言:javascript
复制
zay@ubuntu:~/Documents/pintos/src/threads/build$ pintos run alarm-multiple
Prototype mismatch: sub main::SIGVTALRM () vs none at /home/zay/Documents/pintos/src/utils/pintos line 935.
Constant subroutine SIGVTALRM redefined at /home/zay/Documents/pintos/src/utils/pintos line 927.
qemu-system-x86_64 -drive cache=writeback,file=/tmp/YS3E7FICwo.dsk -m 4 -net none -serial stdio
PiLo hda1
Loading..........
Kernel command line: run alarm-multiple
Pintos booting with 4,088 kB RAM...
382 pages available in kernel pool.
382 pages available in user pool.
Calibrating timer...  286,310,400 loops/s.
Boot complete.
Executing 'alarm-multiple':
(alarm-multiple) begin
(alarm-multiple) Creating 5 threads to sleep 7 times each.
(alarm-multiple) Thread 0 sleeps 10 ticks each time,
(alarm-multiple) thread 1 sleeps 20 ticks each time, and so on.
(alarm-multiple) If successful, product of iteration count and
(alarm-multiple) sleep duration will appear in nondescending order.
(alarm-multiple) thread 0: duration=10, iteration=1, product=10
(alarm-multiple) thread 0: duration=10, iteration=2, product=20

但是,当我在src/threads/build下运行make check时,所有的测试都得到一个超时错误:

代码语言:javascript
复制
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

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

EN

回答 2

Stack Overflow用户

发布于 2017-07-24 16:49:43

显然,QEMU不再支持端口0x8900上的断电顺序。下面是为我提供的一个修复程序(在chaOs中找到):在文件devices/shutdown.c patch shutdown_power_off中,如下所示:

代码语言:javascript
复制
void
shutdown_power_off (void)
{
  // ...
  printf ("Powering off...\n");
  serial_flush ();
  outw (0xB004, 0x2000);  // <-- Add this line
  // ...
}
票数 2
EN

Stack Overflow用户

发布于 2021-04-25 23:29:21

如果您使用的是qemu for pintos。您需要在devices/shutdown.c中添加一行代码。

printf (“Powering off…\n”); serial_flush ();之后插入行outw( 0x604, 0x0 | 0x2000 );,如下所示:

代码语言:javascript
复制
 /* 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 guide了解更多信息

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39805784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档