X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=eeb17eeac26298c6728c1349abbb5bc3a12f1222;hb=5440a348242d2a56cee111000b676ac3d7d84ea5;hp=51b52f7abb95b80966d3dc684ecfeafaeed5ca5b;hpb=7e97928e155c19be56010f3f8ec2dc8f03c6985c;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index 51b52f7..eeb17ee 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -697,6 +697,13 @@ priority to @var{L}. @var{L} releases the lock and thus loses the CPU and is moved to the ready queue. Now @var{L}'s old priority is restored while it is in the ready queue. +@item Can a thread's priority change while it is blocked? + +Yes. While a thread that has acquired lock @var{L} is blocked for any +reason, its priority can increase by priority donation if a +higher-priority thread attempts to acquire @var{L}. This case is +checked by the @code{priority-donate-sema} test. + @item Can a thread added to the ready list preempt the processor? Yes. If a thread added to the ready list has higher priority than the @@ -707,9 +714,11 @@ preempting whatever thread is currently running. @item How does @func{thread_set_priority} affect a thread receiving donations? -It should do something sensible, but no particular behavior is -required. None of the test cases call @func{thread_set_priority} from a -thread while it is receiving a priority donation. +It sets the thread's base priority. The thread's effective priority +becomes the higher of the newly set priority or the highest donated +priority. When the donations are released, the thread's priority +becomes the one set through the function call. This behavior is checked +by the @code{priority-donate-lower} test. @item Calling @func{printf} in @func{sema_up} or @func{sema_down} reboots!