SEM_TIMEDWAIT(3) BSD Library Functions Manual SEM_TIMEDWAIT(3)
NAME
sem_timedwait -- lock a semaphore
LIBRARY
POSIX Threads Library (libpthread, -lpthread)
SYNOPSIS
#include <semaphore.h>
int
sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
DESCRIPTION
The sem_timedwait() function locks the semaphore referenced by sem, as in the sem_wait(3) function. However, if the semaphore cannot be
locked without waiting for another process or thread to unlock the semaphore by performing a sem_post(3) function, this wait will be termi-
nated when the specified timeout expires.
The timeout will expire when the absolute time specified by abs_timeout passes, as measured by the clock on which timeouts are based (that
is, when the value of that clock equals or exceeds abs_timeout), or if the absolute time specified by abs_timeout has already been passed at
the time of the call.
Note that the timeout is based on the CLOCK_REALTIME clock.
The validity of the abs_timeout is not checked if the semaphore can be locked immediately.
RETURN VALUES
The sem_timedwait() function returns zero if the calling process successfully performed the semaphore lock operation on the semaphore desig-
nated by sem. If the call was unsuccessful, the state of the semaphore is unchanged, and the function returns a value of -1 and sets the
global variable errno to indicate the error.
ERRORS
The sem_timedwait() function will fail if:
[EINVAL] The sem argument does not refer to a valid semaphore, or the process or thread would have blocked, and the abs_timeout
parameter specified a nanoseconds field value less than zero or greater than or equal to 1000 million.
[ETIMEDOUT] The semaphore could not be locked before the specified timeout expired.
[EINTR] A signal interrupted this function.
SEE ALSO
sem_post(3), sem_trywait(3), sem_wait(3)
STANDARDS
The sem_timedwait() function conforms to IEEE Std 1003.1-2004 (``POSIX.1'').
HISTORY
The function first appeared in FreeBSD 5.0.
BSD
March 3, 2008 BSD