Provided by: freebsd-manpages_11.1-3_all bug

NAME

     thr_suspend — suspend the calling thread

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <sys/thr.h>

     int
     thr_suspend(struct timespec *timeout);

DESCRIPTION

     This function is intended for implementing threading.  Normal applications should use
     pthread_cond_timedwait(3) together with pthread_cond_broadcast(3) for typical safe
     suspension with cooperation of the thread being suspended, or pthread_suspend_np(3) and
     pthread_resume_np(3) in some specific situations, instead.

     The thr_suspend() system call puts the calling thread in a suspended state, where it is not
     eligible for CPU time.  This state is exited by another thread calling thr_wake(2), when the
     time interval specified by timeout has elapsed, or by the delivery of a signal to the
     suspended thread.

     If the timeout argument is NULL, the suspended state can be only terminated by explicit
     thr_wake() or signal.

     If a wake from thr_wake(2) was delivered before the thr_suspend call, the thread is not put
     into a suspended state.  Instead, the call returns immediately without an error.

     If a thread previously called thr_wake(2) with its own thread identifier, which resulted in
     setting the internal kernel flag to immediately abort interruptible sleeps with an EINTR
     error (see thr_wake(2)), the flag is cleared.  As with thr_wake(2) called from another
     thread, the next thr_suspend call does not result in suspension.

RETURN VALUES

     The thr_suspend() function returns the value 0 if successful; otherwise the value -1 is
     returned and the global variable errno is set to indicate the error.

ERRORS

     The thr_suspend() operation returns the following errors:

     [EFAULT]           The memory pointed to by the timeout argument is not valid.

     [ETIMEDOUT]        The specified timeout expired.

     [ETIMEDOUT]        The timeout argument specified a zero time interval.

     [EINTR]            The sleep was interrupted by a signal.

SEE ALSO

     ps(1), thr_wake(2), pthread_resume_np(3), pthread_suspend_np(3)

STANDARDS

     The thr_suspend() system call is non-standard.