Operating System Design -- The Xinu Approach, Second Edition
In comments in chprio.c, create.c kill.c, receive.c, recvclr.c, resume.c,
send.c, suspend.c, unsleep.c, and wait.c, the possessive process' should be
The code is missing the final right brace on function cons2.
The argument registers are named a1 through a4 instead of a0 through a3.
In newqueue.c, the check for overflow should be >= rather than >.
The explanation of storing multiple registers on a RISC machine
should say that although ARM does have an instruction to store
multiple registers, the instruction takes multiple cycles (like
a CISC machine).
The comment on argument ssize in create.c should say the stack size is
measured in bytes, not words.
Exercise 7.8 is now superfluous because the latest version
of Xinu already includes signaln.
Exerecise 7.12 should say ``When it moves the current process to the waiting
In send.c, the test of prptr->prstate==PR_FREE is unnecessary because
the current version of isbadpid() already performs the test.
The phrase ``Once a process as been'' should read ``Once has process
"ptinit" is misspelled in the panic error message in file ptinit.c.
"original" is misspelled in a comment in ptsend.c.
"The position" should be "The positions".
The argument to sleep and sleepms should be a signed integer rather
The sentence, ``Clkhandler begins by incrementing local variable count1000''
should say ``Clkhandler begins by decrementing local variable count1000''.
In succesive sentences, the references to ``clkdisp'' and ``clkint'' should
refer to clkhandler.
In clkinit.c, the comment "reset os complete" should be "reset is complete".
After the comment about wrapping the buffer pointer, the ``if'' statement
references the output buffer variables instead of the input buffer.
After a line kill arrives, when it checks typtr->tyitail for underflow,
ttyhandle_in.c should add TY_IBUFLEN to typtr->tyitail instead of
In cbreak mode, the driver fails to signal the input semaphore when a
The reference to variable ``csptr'' is out of date; the code now uses
variable name ``uptr'' to reflect that the underlying hardware is a UART.
The phrase ``contains only'' in the description of a data block should
be 'only contains'. The sentence has been rewritten to clarify the
In lflread.s, "individual" is misspelled in a comment.
In the code for rflread.c, calls to htonl() should be replaced
by calls to ntohl(). The code works as is, but the conversion is
really from network to host byte order.
In function nammap(), the copy to tmpname should be outside the
The phrase ``network over a network'' should be ``over a network''.
Copy of corrected pages: