X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=doc%2Fthreads.texi;h=d83b52f4525770b2a89d7768713426e1ad1821b0;hb=c7ceee91c04fa72da655c00cb82302537ff6c9eb;hp=77afeda0e17a49a0062062b16d6c9ba328c705b5;hpb=797a3dbc83b3582d4bc52b04cb298156cdc34f3e;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index 77afeda..d83b52f 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -76,11 +76,11 @@ assembly code. (You don't have to understand it.) It saves the state of the currently running thread and restores the state of the thread we're switching to. -Using the @command{gdb} debugger, slowly trace through a context -switch to see what happens (@pxref{gdb}). You can set a +Using the GDB debugger, slowly trace through a context +switch to see what happens (@pxref{GDB}). You can set a breakpoint on @func{schedule} to start out, and then -single-step from there.@footnote{@command{gdb} might tell you that -@func{schedule} doesn't exist, which is arguably a @command{gdb} bug. +single-step from there.@footnote{GDB might tell you that +@func{schedule} doesn't exist, which is arguably a GDB bug. You can work around this by setting the breakpoint by filename and line number, e.g.@: @code{break thread.c:@var{ln}} where @var{ln} is the line number of the first declaration in @func{schedule}.} Be sure @@ -328,9 +328,10 @@ timer ticks or input events. Turning off interrupts also increases the interrupt handling latency, which can make a machine feel sluggish if taken too far. -You may need to add or modify code where interrupts are already -disabled, such as in @func{sema_up} or @func{sema_down}. You should -still try to keep this code as short as you can. +The synchronization primitives themselves in @file{synch.c} are +implemented by disabling interrupts. You may need to increase the +amount of code that runs with interrupts disabled here, but you should +still try to keep it to a minimum. Disabling interrupts can be useful for debugging, if you want to make sure that a section of code is not interrupted. You should remove @@ -441,8 +442,8 @@ priority such that it no longer has the highest priority must cause it to immediately yield the CPU. Thread priorities range from @code{PRI_MIN} (0) to @code{PRI_MAX} (63). -Lower numbers correspond to @emph{higher} priorities, so that priority 0 -is the highest priority and priority 63 is the lowest. +Lower numbers correspond to lower priorities, so that priority 0 +is the lowest priority and priority 63 is the highest. The initial thread priority is passed as an argument to @func{thread_create}. If there's no reason to choose another priority, use @code{PRI_DEFAULT} (31). The @code{PRI_} macros are @@ -547,6 +548,8 @@ modified by the reference solution. 5 files changed, 440 insertions(+), 29 deletions(-) @end verbatim +@file{fixed-point.h} is a new file added by the reference solution. + @item How do I update the @file{Makefile}s when I add a new source file? @anchor{Adding Source Files} @@ -682,8 +685,8 @@ If multiple threads have the same highest priority, Priority donation only changes the priority of the donee thread. The donor thread's priority is unchanged. -Priority donation is not additive: if thread @var{A} (with priority 3) donates -to thread @var{B} (with priority 5), then @var{B}'s new priority is 3, not 8. +Priority donation is not additive: if thread @var{A} (with priority 5) donates +to thread @var{B} (with priority 3), then @var{B}'s new priority is 5, not 8. @item Can a thread's priority change while it is on the ready queue?