[comp.os.xinu] Errata to Operating System Design Volume I, PC Edition

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.