Destroy a semaphore.
Allocate and Initialise a semaphore.
Post operation on a semaphore.
Wait operation on a semaphore. NOTE: if the semaphore is at 0, this call won't block.
Wait operation on a semaphore. NOTE: this call will block if the semaphore is at 0.