Semaphore Library is H/W independent. It provides the usual
functionality of waiting on & signaling a semaphore. It also provides
the functionality of timeouts in case of waiting. The implementation
details and usage are discussed in the following sections.