OpenBSD manual page server

Manual Page Search Parameters

SEM_WAIT(3) Library Functions Manual SEM_WAIT(3)

sem_wait, sem_timedwait, sem_trywaitdecrement (lock) a semaphore

#include <semaphore.h>

int
sem_wait(sem_t *sem);

int
sem_timedwait(sem_t *sem, const struct timespec *abstime);

int
sem_trywait(sem_t *sem);

The () function decrements (locks) the semaphore pointed to by sem, but blocks if the value of sem is zero, until the value is non-zero and the value can be decremented.

The () function decrements (locks) the semaphore pointed to by sem, but blocks if the value of sem is zero, until either the value is non-zero and can be decremented or the system time specified by abstime is reached.

The () function decrements (locks) the semaphore pointed to by sem only if the value is non-zero. Otherwise, the semaphore is not decremented and an error is returned.

The sem_wait(), sem_timedwait(), and sem_trywait() functions return the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

sem_wait(), sem_timedwait(), and sem_trywait() will fail if:

[]
sem points to an invalid semaphore.

Additionally, sem_wait() and sem_timedwait() will fail if:

[]
The call was interrupted by a signal.

Additionally, sem_timedwait() will fail if:

[]
abstime was NULL or specified a nanosecond value less than zero or greater than 1000 million.
[]
The semaphore value was zero and could not be decremented before abstime was reached.

Additionally, sem_trywait() will fail if:

[]
The semaphore value was zero, and thus could not be decremented.

sem_destroy(3), sem_getvalue(3), sem_init(3), sem_open(3), sem_post(3)

sem_wait(), sem_timedwait(), and sem_trywait() conform to IEEE Std 1003.1-2008 (“POSIX.1”).

April 24, 2018 OpenBSD-current