X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2Fthreads%2Fpriority-donate-nest.c;h=3a3a9a590a2b677031524ad351f6e20e88216b8d;hb=922af9ed1bd72fbf4a4c77ab6ddde78a7b6c3e97;hp=15141b777958cd50f6b14ac87ab62ce92be8a6a2;hpb=0f212736d854d114f070801c2725bd9536e117e8;p=pintos-anon diff --git a/src/tests/threads/priority-donate-nest.c b/src/tests/threads/priority-donate-nest.c index 15141b7..3a3a9a5 100644 --- a/src/tests/threads/priority-donate-nest.c +++ b/src/tests/threads/priority-donate-nest.c @@ -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 , Greg Hutchins , Yu Ping Hu . 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);