New package: io

This contains the functions readAll() and writeAll() which don't return until there's an I/O error or all the bytes you requested are transferred. Made PtyLogger use writeAll() for greater efficiency, slightly modifying the LoggerImpl interface.

Additions to package: concurrency

Added some RCE-specific components to the "concurrency" package. These include low-level synchronization primitives plus a CircularFifo template; the FIFO is actually implemented with the lock-free LlScFifo which uses lwarx/stwc for synchronization. There is also NoInterruptFifo which uses critical sections created by turning off interrupts; this is intended as an alternate means of implementing CircularFifo. Class InterruptGuard uses Initialization Is Resource Allocation (IIRA) to allow easy definition of blocks of code to be run with interrupts off, automatically turning them back on when the block is exited.

Additions to package: service

Added the TimerGuard template to the "service" package (also for RCE only). This uses IIRA to calculate the number of PowerPC time base ticks needed to execute a code block and passes the result to a user-specified object.

Coding examples for some of the above are in testCircularFifo.cc and testTiming.cc.

New PDF documentation

A new version of quarks.pdf is attached to the Petacache Documentation page in Confluence.