Concurrent and Real-Time Programming in Ada: Errata


Chapter 2

Pages 27-28:  The text on Page 27 says that the Pressure_Controller has a period of 30ms and the Temp_Controller has a period of 70ms but the code on Page 28 has periods the other way around. The text is correct.

Chapter 4

Page 63: At the bottom of the page, the code should be

task type Sieve(B: access Bounded_Buffer);

task Sieve_Ptr is access Sieve;

Chapter 10

Page 227:  In the Print procedure, X'Img should be X'Image

Page 237: In package Manager there is a "with" and "use" clause for Asynchronous_Exception. Strictly, this doesn't need to be on the package specification but can be on the body only.

Chapter 11

Page 280: The barrier on the "set" entry should just be "when Allocated". Data can be ovewritten when set.

Page 283: In the body of the worker task, it assumes that the task has found it position in the pool of workers (i.e. "Found" is set to true). After the "for loop" before it enters in to the main loop, there should be a test on "Found" and an exception raised if it is false.

Chapter 14

Page 341:  line 14 Replace "- task T has an earlier deadline than task S." with "- task T has an earlier deadline than task S and all other  tasks on ready queues with priorities strictly less than R."

Page 343: line -10 (ie 10 from bottom)  Replace "at priority 2, or 4" with "at priority 2, or 3"

Page 383: First line "(10)" -> "(20)"

Chapter 16

Page 411: In the code fragment at the top of the page "Req_Period" should be "Params.Period".

Page 413: Although not strictly needed, towards the bottom of the Page "when Group_Budget_Error" would be clearer if "when Ada.Execution_Time.Group_Budgets.Group_Budget_Error".

Page 426:
Although not strictly needed, the following variables are clear if the full name is given. However, note that because of space restrictions, the full definition of the "Cruise" package is not given.

Page 428: Figure 16.8 The transition arrow between "Accelerating" to "Running in top gear" should be bolded and have an arrow head.
Page 431: First code insert, the "Interrupt_Release" type is a bit difficult to find in the book because we haven't presented all the code. It is defined on Page 407.

Minor Typos

Page 238: Although the program on this Page is syntactically correct as Ada does not distinguish case, "IDs" should be "Ids" to be consistent with the declaratiion (in two places)

Page 289: " Last sentence of penultimate paragraph, "It simply want" -> "It simply wants"

Page 290: In the body of task Controller, the declare keyword is not 
strictly needed.

Page 408: Middle paragraph "null values" -> "null bodies"

Page 443 "scheduling analysis sporadic tasks" ->
"scheduling analysis, sporadic tasks"