The sem_getvalue function updates a location referenced by the
sval argument with the value of semaphore sem. The updated value
represents an actual semaphore value that occurred during the
call, but may not be the actual value of the semaphore at the
time that the value is returned to the calling process.
If the semaphore is locked, the value returned will either be
zero or a negative number indicating the number of processes
waiting for the semaphore at some time during the call.