Fix wrong explanation of sleeping in an interrupt handler.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 9 Apr 2006 20:01:51 +0000 (20:01 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 9 Apr 2006 20:01:51 +0000 (20:01 +0000)
Thanks to Godmar Back for reporting this bug.

doc/tour.texi

index f4760ec1ffd5a4cd76a2d1830814ead39e5f1a2c..c1371cfde5760df3df4129a4f5eec6b0c4d3e66e 100644 (file)
@@ -1093,9 +1093,9 @@ Second, an interrupt handler must not call any function that can
 sleep, which rules out @func{thread_yield}, @func{lock_acquire}, and
 many others.  This is because external interrupts use space on the
 stack of the kernel thread that was running at the time the interrupt
-occurred.  If the interrupt handler tried to sleep and that thread
-resumed, then the two uses of the single stack would interfere, which
-cannot be allowed.
+occurred.  If the interrupt handler slept, it would effectively put that
+thread to sleep too until the interrupt handler resumed control and
+returned.
 
 Because an external interrupt runs with interrupts disabled, it
 effectively monopolizes the machine and delays all other activities.