Add comment.
[pintos-anon] / src / tests / threads / priority-donate-nest.c
index 15141b777958cd50f6b14ac87ab62ce92be8a6a2..3a3a9a590a2b677031524ad351f6e20e88216b8d 100644 (file)
@@ -1,4 +1,10 @@
-/* Based on a test originally submitted for Stanford's CS 140 in
+/* Low-priority main thread L acquires lock A.  Medium-priority
+   thread M then acquires lock B then blocks on acquiring lock A.
+   High-priority thread H then blocks on acquiring lock B.  Thus,
+   thread H donates its priority to M, which in turn donates it
+   to thread L.
+   
+   Based on a test originally submitted for Stanford's CS 140 in
    winter 1999 by Matt Franklin <startled@leland.stanford.edu>,
    Greg Hutchins <gmh@leland.stanford.edu>, Yu Ping Hu
    <yph@cs.stanford.edu>.  Modified by arens. */
@@ -25,7 +31,7 @@ test_priority_donate_nest (void)
   struct locks locks;
 
   /* This test does not work with the MLFQS. */
-  ASSERT (!enable_mlfqs);
+  ASSERT (!thread_mlfqs);
 
   /* Make sure our priority is the default. */
   ASSERT (thread_get_priority () == PRI_DEFAULT);
@@ -37,15 +43,15 @@ test_priority_donate_nest (void)
 
   locks.a = &a;
   locks.b = &b;
-  thread_create ("medium", PRI_DEFAULT - 1, medium_thread_func, &locks);
+  thread_create ("medium", PRI_DEFAULT + 1, medium_thread_func, &locks);
   thread_yield ();
   msg ("Low thread should have priority %d.  Actual priority: %d.",
-       PRI_DEFAULT - 1, thread_get_priority ());
+       PRI_DEFAULT + 1, thread_get_priority ());
 
-  thread_create ("high", PRI_DEFAULT - 2, high_thread_func, &b);
+  thread_create ("high", PRI_DEFAULT + 2, high_thread_func, &b);
   thread_yield ();
   msg ("Low thread should have priority %d.  Actual priority: %d.",
-       PRI_DEFAULT - 2, thread_get_priority ());
+       PRI_DEFAULT + 2, thread_get_priority ());
 
   lock_release (&a);
   thread_yield ();
@@ -63,7 +69,7 @@ medium_thread_func (void *locks_)
   lock_acquire (locks->a);
 
   msg ("Medium thread should have priority %d.  Actual priority: %d.",
-       PRI_DEFAULT - 2, thread_get_priority ());
+       PRI_DEFAULT + 2, thread_get_priority ());
   msg ("Medium thread got the lock.");
 
   lock_release (locks->a);