NAME
sseemmttrryywwaaiitt,, sseemmwwaaiitt - lock a semaphore
SYNOPSIS
##iinncclluuddee <
int sseemmttrryywwaaiitt(semt *sem); int sseemmwwaaiitt(semt *sem);> DESCRIPTION
The semaphore referenced by sem is locked. When calling sseemmwwaaiitt(), if the semaphore's value is zero, the calling thread will block until thelock is acquired or until the call is interrupted by a signal. Alterna-
tively, the sseemmttrryywwaaiitt() function will fail if the semaphore is already locked, rather than blocking on the semaphore. If successful (the lock was acquired), sseemmwwaaiitt() and sseemmttrryywwaaiitt() willreturn 0. Otherwise, -1 is returned and errno is set, and the state of
the semaphore is unchanged. EERRRROORRSS sseemmwwaaiitt() and sseemmttrryywwaaiitt() succeed unless: [EAGAIN] The semaphore is already locked. [EDEADLK] A deadlock was detected. [EINTR] The call was interrupted by a signal. [EINVAL] sem is not a valid semaphore descriptor. NNOOTTEESS Applications may encounter a priority inversion while using semaphores. When a thread is waiting on a semaphore which is about to be posted by alower-priority thread and the lower-priority thread is preempted by
another thread (of medium priority), a priority inversion has occured,and the higher-priority thread will be blocked for an unlimited time
period. Programmers using the realtime functionality of the system should take care to avoid priority inversions.SEE ALSO
semopen(2), sempost(2), semctl(2), semget(2), semop(2) HISTORYsseemmwwaaiitt() and sseemmttrryywwaaiitt() are specified in the POSIX Realtime Exten-
sion (1003.1b-1993/1003.1i-1995).
Darwin June 8, 2000 Darwin