Specify how we'll grade problem 1-1.
[pintos-anon] / doc / threads.texi
index 7d7526c908e055364ac40110bf8e6f8cfac58832..33600393977ff6b6f743f4124875eb00be91acd6 100644 (file)
@@ -157,9 +157,9 @@ the kernel.
 Basic interrupt handling and functions for turning interrupts on and
 off.
 
 Basic interrupt handling and functions for turning interrupts on and
 off.
 
-@item intr-stubs.pl
+@item intr-stubs.S
 @itemx intr-stubs.h
 @itemx intr-stubs.h
-A Perl program that outputs assembly for low-level interrupt handling.
+Assembly code for low-level interrupt handling.
 
 @item synch.c
 @itemx synch.h
 
 @item synch.c
 @itemx synch.h
@@ -487,7 +487,10 @@ exited at the time of the later joins.  Thus, joins on T after the
 first should return immediately.
 
 Calling @func{thread_join} on an thread that is not the caller's
 first should return immediately.
 
 Calling @func{thread_join} on an thread that is not the caller's
-child should cause the caller to return immediately.
+child should cause the caller to return immediately.  For this purpose,
+children are not inherited, that is, if @var{A} has child @var{B} and
+@var{B} has child @var{C}, then @var{A} always returns immediately
+should it try to join @var{C}, even if @var{B} is dead.
 
 Consider all the ways a join can occur: nested joins (@var{A} joins
 @var{B}, then @var{B} joins @var{C}), multiple joins (@var{A} joins
 
 Consider all the ways a join can occur: nested joins (@var{A} joins
 @var{B}, then @var{B} joins @var{C}), multiple joins (@var{A} joins
@@ -495,15 +498,10 @@ Consider all the ways a join can occur: nested joins (@var{A} joins
 if @func{thread_join} is called on a thread that has not yet been
 scheduled for the first time?  You should handle all of these cases.
 Write test code that demonstrates the cases your join works for.
 if @func{thread_join} is called on a thread that has not yet been
 scheduled for the first time?  You should handle all of these cases.
 Write test code that demonstrates the cases your join works for.
-Don't overdo the output volume, please!
 
 Be careful to program this function correctly.  You will need its
 functionality for project 2.
 
 
 Be careful to program this function correctly.  You will need its
 functionality for project 2.
 
-Once you've implemented @func{thread_join}, define
-@code{THREAD_JOIN_IMPLEMENTED} in @file{constants.h}.
-@xref{Conditional Compilation}, for more information.
-
 @node Problem 1-3 Priority Scheduling
 @section Problem 1-3: Priority Scheduling
 
 @node Problem 1-3 Priority Scheduling
 @section Problem 1-3: Priority Scheduling
 
@@ -557,10 +555,6 @@ implement this fix for semaphores, condition variables, or joins,
 although you are welcome to do so.  However, you do need to implement
 priority scheduling in all cases.
 
 although you are welcome to do so.  However, you do need to implement
 priority scheduling in all cases.
 
-You may assume a static priority for priority donation, that is, it is
-not necessary to ``re-donate'' a thread's priority if it changes
-(although you are free to do so).
-
 @node Problem 1-4 Advanced Scheduler
 @section Problem 1-4: Advanced Scheduler
 
 @node Problem 1-4 Advanced Scheduler
 @section Problem 1-4: Advanced Scheduler
 
@@ -736,7 +730,9 @@ Make the timer tick more slowly by decreasing @code{TIMER_FREQ} in
 
 The former two changes are only desirable for testing problem 1-1 and
 possibly 1-3.  You should revert them before working on other parts
 
 The former two changes are only desirable for testing problem 1-1 and
 possibly 1-3.  You should revert them before working on other parts
-of the project or turn in the project.
+of the project or turn in the project.  We will test problem 1-1 with
+@code{TIME_SLICE} set to 100 and @code{TIMER_FREQ} set to 19, but we
+will leave them at their defaults for all the other problems.
 
 @item
 @b{Should @file{p1-1.c} be expected to work with the MLFQS turned on?}
 
 @item
 @b{Should @file{p1-1.c} be expected to work with the MLFQS turned on?}