Real-Time Systems and Programming Languages
Errata
The following errors have been found in the
second (and first) print run of the Third Edition:
- page 155 The if statement in the Push
procedure . It should say
if Stk.Sp = Stack_Index'Last then
- page 155 The if statement in the Pop
procedure . It should say
if Stk.Sp = Stack_Index'First then
- page 438 TIMER_SETTIME ( periodic_timer, 0,
&
required, & old); should
TIMER_SETTIME ( periodic_timer,
TIMER_ABSTIME,
& required, & old);
The following errors have been found in the
first printing of the Third Edition
- page ix Alonse
should be Alonso, sorry Alejandro
- page 49 The following sentence should be
added after the first paragraph.
If no precision is given, the language requires an implementation
to choose a safe range.
- page 77 compiler time should be
compile time
- page 87 in the insert function, front.next = newNode
should be front = newNode
- page 87 the remove function should be
public Element remove() // visible method
{
if(!empty()) {
Element tmpE = front.data;
front = front.next;
if(empty()) back = null;
}
// garbage collection will free up the QueueNode object
// which is now dangling
return tmpE;
}
- return Element rather than be void.
- page 199: footnote: synchronize modifiers should
be synchronized modifiers
- page 199: footnote: synchronize modifier
should be synchronized modifierp
- page 205, first par Sections should be Section
- page 224, first par the Chapter 9 should be Chapter 9
- page 242 Program 8.2 all the above function return should read all the above
functions return
- page 264 the if
statements in the put and get methods should really be while loops.
- page 267: The startRead and stopRead functions
should not have the "synchronized" modifier.
- page 278: Question 8.19 should be Redo Exercise 8.11
- page 305 controller(yplane)
should be
controller(zplane)
- page 314: 7th line from the top One.Sync should be Two.Sync
- page 327, Section 10.2.4. for programming atomic action should be for programming
atomic actions
- page 363 t.interrupt;
should be
t.interrupt();
- page 364 5th line of code new AsynchronouslyInterruptedException; should be new
AsynchronouslyInterruptedException();
- page 370, in function done, the following code
shouldbe added after the wait(); statement
if(AtomicActionException.wasInterrupted)
{
allDone--;
return;
}
- page 371: the statement if(x.getClass().getName() ==
"AsynchronouslyInterruptedException")
- page 385: The while(size < resourcesFree) wait(); statement should be while(size > resourcesFree) wait();is better expressed as
if(x instanceOf AsynchronouslyInterruptedException)
- page 420 #defineCLOCK_THREAD..
should be
#define CLOCK_THREAD..
- page 424 section 12.4.1 consume processes should
be consumer processes
- page 446 Esteral should be Esterel throughout section 12.7.5
- page 463, Question 12.4 Whenever it is caller each process should be Whenever it is called, each process
- page 477, last line of page, process a, which is 3 should be process b, which is 3.
- page 514 Program 13.5 delete public abstract boolean is Feasible(); and the associated comment
- page 541 Figure 14.7: Common Interfaces should
be Common Facilities
- page 564 8th line from the
bottom, when non-faulty processor
are communicating should be when non-faulty processors are communicating
- page 582 interrupt
vector should be interrupt vector table
- page 597, code at the bottom of the page Tcsr.Error
should be Tcsr.Errors
- page 593 could
increment systemtime directly should be could increment TimeOfDay directly
- page 645 over
100% of the processor should be over 10% of
the processor
- page 673 15th line from top of page for Hwcsraddress should
be for Hwcsr'Address
- page 679 the Period in the
Co_Sensor_Rtatt should be 100 not 1000
- page 729 Esteral should be Esterel