SWI and Task modules were discussed previously in this presentation. The kernel level supports a few other useful modules. The Semaphore module provides pend and post operations that allow Tasks to wait for I/O or some other external event. SYS/BIOS supports both counting and binary semaphores. Similar to the “select()” API found on other operating systems, the Event module allows a Task to wait for more than one external event. The Event pend() API allows the caller to specify a set of events to wait for and whether or not to wait for all events in a set, or just one of the set. The Clock module provides a heart-beat for the system. The user can create clock functions and specify whether they are periodic or one-shot. Periodic means that they will run forever (or until deleted) at the specified period. One-shot means that the function will only be called one time when the timeout expires. TI provides hook points within the HWI, SWI and Task schedulers which allow the user to plug in their own functions at the key scheduler points for benchmarking or debugging purposes.

