2016-10-01 392 views
0

我刚刚开始使用运行ubuntu 14.04 x64系统的家用计算机上的pintos项目。运行pintos时的测试超时

我能够编译从src/threads/目录中的项目,最初的测试pintos run alarm-multiple似乎工作好(注意,其默认运行QEMU):

[email protected]:~/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 

然而,当我运行make checksrc/threads/build,所有的测试得到了超时故障:

[email protected]:~/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 

我应该做出哪些改变来解决这个问题?

回答

0

显然,QEMU不再支持端口0x8900上的断电顺序。这里有一个修复,使得它为我工作(在chaOs找到):文件中devices/shutdown.c补丁shutdown_power_off如下:

void 
shutdown_power_off (void) 
{ 
    // ... 
    printf ("Powering off...\n"); 
    serial_flush(); 
    outw (0xB004, 0x2000); // <-- Add this line 
    // ... 
}