Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
THR_SUSPEND(2)		      System Calls Manual		THR_SUSPEND(2)

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 applica-
       tions	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	termi-
       nated 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 re-
       turns immediately without an error.

       If a thread previously called thr_wake(2) with its own  thread  identi-
       fier, 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 indi-
       cate 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.

HISTORY
       The thr_suspend() system	call first appeared in FreeBSD 5.2.

FreeBSD	13.2			  May 5, 2020			THR_SUSPEND(2)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=thr_suspend&sektion=2&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help