xref: /freebsd/share/man/man3/pthread_cond_wait.3 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
11fbdc08dSPoul-Henning Kamp.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
21fbdc08dSPoul-Henning Kamp.\" All rights reserved.
31fbdc08dSPoul-Henning Kamp.\"
41fbdc08dSPoul-Henning Kamp.\" Redistribution and use in source and binary forms, with or without
51fbdc08dSPoul-Henning Kamp.\" modification, are permitted provided that the following conditions
61fbdc08dSPoul-Henning Kamp.\" are met:
71fbdc08dSPoul-Henning Kamp.\" 1. Redistributions of source code must retain the above copyright
81fbdc08dSPoul-Henning Kamp.\"    notice, this list of conditions and the following disclaimer.
91fbdc08dSPoul-Henning Kamp.\" 2. Redistributions in binary form must reproduce the above copyright
101fbdc08dSPoul-Henning Kamp.\"    notice, this list of conditions and the following disclaimer in the
111fbdc08dSPoul-Henning Kamp.\"    documentation and/or other materials provided with the distribution.
121fbdc08dSPoul-Henning Kamp.\" 3. Neither the name of the author nor the names of any co-contributors
131fbdc08dSPoul-Henning Kamp.\"    may be used to endorse or promote products derived from this software
141fbdc08dSPoul-Henning Kamp.\"    without specific prior written permission.
151fbdc08dSPoul-Henning Kamp.\"
161fbdc08dSPoul-Henning Kamp.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
171fbdc08dSPoul-Henning Kamp.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
181fbdc08dSPoul-Henning Kamp.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
191fbdc08dSPoul-Henning Kamp.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
201fbdc08dSPoul-Henning Kamp.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
211fbdc08dSPoul-Henning Kamp.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
221fbdc08dSPoul-Henning Kamp.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
231fbdc08dSPoul-Henning Kamp.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
241fbdc08dSPoul-Henning Kamp.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
251fbdc08dSPoul-Henning Kamp.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
261fbdc08dSPoul-Henning Kamp.\" SUCH DAMAGE.
271fbdc08dSPoul-Henning Kamp.\"
28*c5fb9d20SKonstantin Belousov.Dd August 7, 2019
291fbdc08dSPoul-Henning Kamp.Dt PTHREAD_COND_WAIT 3
30a307d598SRuslan Ermilov.Os
311fbdc08dSPoul-Henning Kamp.Sh NAME
321fbdc08dSPoul-Henning Kamp.Nm pthread_cond_wait
331fbdc08dSPoul-Henning Kamp.Nd wait on a condition variable
34d8a78688SAlexey Zelkin.Sh LIBRARY
35ec7452f1SRuslan Ermilov.Lb libpthread
361fbdc08dSPoul-Henning Kamp.Sh SYNOPSIS
3732eef9aeSRuslan Ermilov.In pthread.h
381fbdc08dSPoul-Henning Kamp.Ft int
39b6413b6dSPedro F. Giffuni.Fn pthread_cond_wait "pthread_cond_t *restrict cond" "pthread_mutex_t *restrict mutex"
401fbdc08dSPoul-Henning Kamp.Sh DESCRIPTION
411fbdc08dSPoul-Henning KampThe
421fbdc08dSPoul-Henning Kamp.Fn pthread_cond_wait
431fbdc08dSPoul-Henning Kampfunction atomically blocks the current thread waiting on the condition
441fbdc08dSPoul-Henning Kampvariable specified by
451fbdc08dSPoul-Henning Kamp.Fa cond ,
4620946283SBrad Davisand releases the mutex specified by
471fbdc08dSPoul-Henning Kamp.Fa mutex .
481fbdc08dSPoul-Henning KampThe waiting thread unblocks only after another thread calls
49d0353b83SRuslan Ermilov.Xr pthread_cond_signal 3 ,
50d0353b83SRuslan Ermilovor
511fbdc08dSPoul-Henning Kamp.Xr pthread_cond_broadcast 3
527b79d3abSNik Claytonwith the same condition variable, and the current thread reacquires the lock
531fbdc08dSPoul-Henning Kampon
541fbdc08dSPoul-Henning Kamp.Fa mutex .
551fbdc08dSPoul-Henning Kamp.Sh RETURN VALUES
561fbdc08dSPoul-Henning KampIf successful, the
571fbdc08dSPoul-Henning Kamp.Fn pthread_cond_wait
58c6ff3a1bSSheldon Hearnfunction will return zero.
59c6ff3a1bSSheldon HearnOtherwise an error number will be returned to
601fbdc08dSPoul-Henning Kampindicate the error.
611fbdc08dSPoul-Henning Kamp.Sh ERRORS
626f673fd1SPhilippe CharnierThe
631fbdc08dSPoul-Henning Kamp.Fn pthread_cond_wait
646f673fd1SPhilippe Charnierfunction will fail if:
651fbdc08dSPoul-Henning Kamp.Bl -tag -width Er
661fbdc08dSPoul-Henning Kamp.It Bq Er EINVAL
671fbdc08dSPoul-Henning KampThe value specified by
681fbdc08dSPoul-Henning Kamp.Fa cond
691fbdc08dSPoul-Henning Kampor the value specified by
7049b1e06aSRalf S. Engelschall.Fa mutex
711fbdc08dSPoul-Henning Kampis invalid.
72e4adaf64SWarner Losh.It Bq Er EPERM
73e4adaf64SWarner LoshThe specified
74e4adaf64SWarner Losh.Fa mutex
75e4adaf64SWarner Loshwas not locked by the calling thread.
762a339d9eSKonstantin Belousov.It Bq Er EOWNERDEAD
772a339d9eSKonstantin BelousovThe argument
782a339d9eSKonstantin Belousov.Fa mutex
79*c5fb9d20SKonstantin Belousovpoints to a robust mutex and the process containing the previous owning
80*c5fb9d20SKonstantin Belousovthread terminated while holding the mutex lock.
812a339d9eSKonstantin BelousovThe lock was granted to the caller and it is up to the new owner
822a339d9eSKonstantin Belousovto make the state consistent.
832a339d9eSKonstantin Belousov.It Bq Er ENOTRECOVERABLE
842a339d9eSKonstantin BelousovThe state protected by the
852a339d9eSKonstantin Belousov.Fa mutex
862a339d9eSKonstantin Belousovis not recoverable.
871fbdc08dSPoul-Henning Kamp.El
881fbdc08dSPoul-Henning Kamp.Sh SEE ALSO
89acd80190SWolfram Schneider.Xr pthread_cond_broadcast 3 ,
901fbdc08dSPoul-Henning Kamp.Xr pthread_cond_destroy 3 ,
91acd80190SWolfram Schneider.Xr pthread_cond_init 3 ,
921fbdc08dSPoul-Henning Kamp.Xr pthread_cond_signal 3 ,
932a339d9eSKonstantin Belousov.Xr pthread_cond_timedwait 3 ,
942a339d9eSKonstantin Belousov.Xr pthread_mutex_consistent 3
951fbdc08dSPoul-Henning Kamp.Sh STANDARDS
966f673fd1SPhilippe CharnierThe
971fbdc08dSPoul-Henning Kamp.Fn pthread_cond_wait
986f673fd1SPhilippe Charnierfunction conforms to
99096841ecSRuslan Ermilov.St -p1003.1-96 .
100