Use TIMER_FREQ of 19 for grading priority-fifo.
[pintos-anon] / grading / threads / run-tests
index 731499adc67e8a59f968ec71e21178fd6d56189f..dc8e46f6ef8b7b19095b4130359e0fcf58e43d5c 100755 (executable)
@@ -56,6 +56,7 @@ die "Don't know how to '$action'";
 sub run_test {
     # Change constants.h if necessary.
     my ($defines) = $test ne 'mlfqs-on' ? "" : "#define MLFQS 1\n";
+    $defines .= "#define THREAD_JOIN_IMPLEMENTED 1\n";
     if ($defines ne snarf ("pintos/src/constants.h")) {
        open (CONSTANTS, ">pintos/src/constants.h");
        print CONSTANTS $defines;
@@ -64,13 +65,24 @@ sub run_test {
 
     # Changes devices/timer.c if necessary.
     my ($new_time_slice) = $test eq 'priority-fifo' ? 100 : 1;
-    my (@timer) = snarf ("pintos/src/devices/timer.c");
-    if (!grep (/^\#define TIME_SLICE $new_time_slice$/, @timer)) {
-       @timer = grep (!/^\#define TIME_SLICE/, @timer);
-       unshift (@timer, "#define TIME_SLICE $new_time_slice");
-       open (TIMER, ">pintos/src/devices/timer.c");
-       print TIMER map ("$_\n", @timer);
-       close (TIMER);
+    my (@timer_c) = snarf ("pintos/src/devices/timer.c");
+    if (!grep (/^\#define TIME_SLICE $new_time_slice$/, @timer_c)) {
+       @timer_c = grep (!/^\#define TIME_SLICE/, @timer_c);
+       unshift (@timer_c, "#define TIME_SLICE $new_time_slice");
+       open (TIMER_C, ">pintos/src/devices/timer.c");
+       print TIMER_C map ("$_\n", @timer_c);
+       close (TIMER_C);
+    }
+
+    # Changes devices/timer.h if necessary.
+    my ($new_timer_freq) = $test eq 'priority-fifo' ? 19 : 100;
+    my (@timer_h) = snarf ("pintos/src/devices/timer.h");
+    if (!grep (/^\#define TIMER_FREQ $new_time_slice$/, @timer_h)) {
+       @timer_h = grep (!/^\#define TIMER_FREQ/, @timer_h);
+       unshift (@timer_h, "#define TIMER_FREQ $new_timer_freq");
+       open (TIMER_H, ">pintos/src/devices/timer.h");
+       print TIMER_H map ("$_\n", @timer_h);
+       close (TIMER_H);
     }
 
     # Copy in the new test.c and delete enough files to ensure a full rebuild.
@@ -94,7 +106,7 @@ sub run_test {
     xsystem ("cp pintos/src/threads/build/os.dsk output/$test");
 
     # Run.
-    my ($timeout) = $test !~ /^mlfqs/ ? 10 : 600;
+    my ($timeout) = $test !~ /^mlfqs/ ? 15 : 600;
     return run_pintos (["-v", "run", "-q"],
                       CHDIR => "pintos/src/threads/build",
                       LOG => "$test/run",