#include <semaphore.h> int
sem_timedwait (sem_t *sem const struct timespec *abs_timeout);
DESCRIPTION
The
sem_timedwait ();
function locks the semaphore referenced by
Fa sem ,
as in the
sem_wait3
function.
However, if the semaphore cannot be locked without waiting for
another process or thread to unlock the semaphore by performing
a
sem_post3
function, this wait will be terminated when the specified timeout expires.
The timeout will expire when the absolute time specified by
Fa abs_timeout
passes, as measured by the clock on which timeouts are based (that is,
when the value of that clock equals or exceeds
Fa abs_timeout ) ,
or if the
absolute time specified by
Fa 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
Fa 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 designated by
Fa 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:
Bq Er EINVAL
The
Fa sem
argument does not refer to a valid semaphore, or the process or thread would
have blocked, and the
Fa abs_timeout
parameter specified a nanoseconds field value less than zero or greater than
or equal to 1000 million.
Bq Er ETIMEDOUT
The semaphore could not be locked before the specified timeout expired.