X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=2f42e3dc5979b8f8ab33fd79db7af020a285c932;hb=01b1921d261ad0dffb13726e3c354a1b74ca2afd;hp=58cf31609fd1d956e2c70285db3d4bfa1c1e8adf;hpb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index 58cf316..2f42e3d 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -461,10 +461,9 @@ a lock that @var{M} holds and @var{M} is waiting on a lock that @var{L} holds, then both @var{M} and @var{L} should be boosted to @var{H}'s priority. -You need not implement priority donation when a thread is waiting -for a lock held by a lower-priority thread. You need not -implement priority donation for semaphores or condition variables, -but you are welcome to do so. You do need to implement +You must implement priority donation for locks. You need not +implement priority donation for semaphores or condition variables +(but you are welcome to do so). You do need to implement priority scheduling in all cases. Finally, implement the following functions that allow a thread to @@ -481,6 +480,9 @@ Returns the current thread's priority. In the presence of priority donation, returns the higher (donated) priority. @end deftypefun +You need not provide any interface to allow a thread to directly modify +other threads' priorities. + The priority scheduler is not used in any later project. @node Advanced Scheduler @@ -627,7 +629,7 @@ list. Yes. As long as there is a single highest-priority thread, it continues running until it blocks or finishes, even if it calls @func{thread_yield}. -If there are multiple threads have the same highest priority, +If multiple threads have the same highest priority, @func{thread_yield} should switch among them in ``round robin'' order. @item What happens to the priority of a donating thread? @@ -653,6 +655,12 @@ processor. It is not acceptable to wait for the next timer interrupt. The highest priority thread should run as soon as it is runnable, 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. + @item Calling @func{printf} in @func{sema_up} or @func{sema_down} reboots! @anchor{printf Reboots}