X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Ftour.texi;h=d1147dde6b0e91d891d5192cbf6bcc841781b920;hb=64e9bcdf25636d647d18f6a584aa5f87e212f0da;hp=845a1c8b6f68904eb3289ed532e93b065832d853;hpb=841338bbc961acad4ca01edb7b140578b477e1cf;p=pintos-anon diff --git a/doc/tour.texi b/doc/tour.texi index 845a1c8..d1147dd 100644 --- a/doc/tour.texi +++ b/doc/tour.texi @@ -303,8 +303,8 @@ grows downward from the end of the page. It looks like this: | magic | | : | | : | - | name | | status | + | tid | 0 kB +---------------------------------+ @end group @end example @@ -667,22 +667,22 @@ struct condition not_full; /* @r{Signaled when the buffer is not full.} */ void put (char ch) @{ lock_acquire (&lock); - while (n == BUF_SIZE) /* @r{Can't add to @var{buf} as long as it's full.} */ - cond_wait (¬_full); - buf[head++ % BUF_SIZE] = ch; /* @r{Add @var{ch} to @var{buf}.} */ + while (n == BUF_SIZE) /* @r{Can't add to @var{buf} as long as it's full.} */ + cond_wait (¬_full, &lock); + buf[head++ % BUF_SIZE] = ch; /* @r{Add @var{ch} to @var{buf}.} */ n++; - cond_signal (¬_empty); /* @r{@var{buf} can't be empty anymore.} */ + cond_signal (¬_empty, &lock); /* @r{@var{buf} can't be empty anymore.} */ lock_release (&lock); @} char get (void) @{ char ch; lock_acquire (&lock); - while (n == 0) /* @r{Can't read from @var{buf} as long as it's empty.} */ - cond_wait (¬_empty); - ch = buf[tail++ % BUF_SIZE]; /* @r{Get @var{ch} from @var{buf}.} */ + while (n == 0) /* @r{Can't read from @var{buf} as long as it's empty.} */ + cond_wait (¬_empty, &lock); + ch = buf[tail++ % BUF_SIZE]; /* @r{Get @var{ch} from @var{buf}.} */ n--; - cond_signal (¬_full); /* @r{@var{buf} can't be full anymore.} */ + cond_signal (¬_full, &lock); /* @r{@var{buf} can't be full anymore.} */ lock_release (&lock); @} @end example @@ -782,11 +782,7 @@ In Pintos, @func{intr_init} in @file{threads/interrupt.c} sets up the IDT so that each entry points to a unique entry point in @file{threads/intr-stubs.S} named @func{intr@var{NN}_stub}, where @var{NN} is the interrupt number in -hexadecimal.@footnote{@file{threads/intr-stubs.S} is so repetitive -that it is actually generated by a Perl script, -@file{threads/intr-stubs.pl}. Thus, you will actually find -@file{threads/intr-stubs.S} in your @file{threads/build/threads} -directory, not in plain @file{threads}.} Because the CPU doesn't give +hexadecimal. Because the CPU doesn't give us any other way to find out the interrupt number, this entry point pushes the interrupt number on the stack. Then it jumps to @func{intr_entry}, which pushes all the registers that the processor