dt@PURDUE.EDU (Daniel G. Tormey) (06/07/88)
While reading the P.C. edition of Operating System Design, Volume I, The XINU Approach, I found several items which I believe to be in error. A copy of this has been sent to Dr. Fossom who is in charge of corrections for the book. Daniel Tormey (dt@medusa.cs.purdue.edu) p.s. neg line #'s refer to line from bottom of page ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ E R R A T A 6-2-88 Douglas Comer, Timothy Fossum Operating System Design Volume I The XINU Approach, PC Edition Prentice Hall Inc., 1988 ISBN 0-13-638180-4 Page Line Problem ---- ---- ----------------------------------------------------------- 21 1 only memory <= 640K need be continuous. 22 -5 00400-004FF is BIOS data area. 00500-005FF is DOS data area. 00600-????? is resident part of DOS. ?????-9FFFF is available user memory. 43 -6 The text states that kgetc() is intended for use in debugging when interrupts are disabled. Since interrupts are dissabled the loop "while((ch=kbdgetc()) == NOCH) ;" will only terminate if there is already a keystroke waiting in the buffer. 69 20 The variable _pstack_ does not exist. 74 The comments define stack contents in terms of SP. The code makes use of the stack in terms of BP. It is important to note that SP+4 is different from BP+4. It would be more clear to comment in terms of BP. 81 -6 _Ready_ does not call _resced_. 113 11 This would be more clear with _wait(s)_ and _signal(s)_ reversed. i.e. If we wait then we must signal. 143 6,7,9 These statements are not needed. 185 12 _Ioinit_ does not exist. 203,259 The function rcvchr exists in two source files. 211 -5 _Erase1_ is not called when a line kill character is typed. 216 1-4 _Addr_ is not used and is not a parameter to the procedure. 252 -7 There is no verification that the window is open and the same before and after the wait. 287 -2 _Psend_ does not call _panic_. 289 12 "(ptptr->ptrsem)" ==> "(ptptr->ptssem)" 290 -9 "...receiver semaphore _ptrsem_ ..." ==> "...senders semaphore _ptssem_ ..." 290 -5 "...senders semaphore _ptrsem_ ..." ==> "...receivers semaphore _ptrsem_ ..." 308, 50 Dsread() uses parameters buffer, device, block, while dread() uses parameters in the order device, buffer, block. It would be better to be consistent. 317 It should be noted that dsksync() only guarantees that requests made before the sync was issued are completed when dsksync() returns. Of the requests made after sync was issued, some will be done and others will still be in the queue. 324 5 "...restrict access of each file to at most one process." I was unable to find any code which enforces this statement. 347 7 Only the data block is flushed by this code.