xref: /freebsd/share/man/man3/pthread_barrier_destroy.3 (revision b6413b6db8756c1ecae5e575e6516f811966046f)
1d4d7df5cSMike Makonnen.\" Copyright (c) 2004 Michael Telahun Makonnen
2d4d7df5cSMike Makonnen.\" All rights reserved.
3d4d7df5cSMike Makonnen.\"
4d4d7df5cSMike Makonnen.\" Redistribution and use in source and binary forms, with or without
5d4d7df5cSMike Makonnen.\" modification, are permitted provided that the following conditions
6d4d7df5cSMike Makonnen.\" are met:
7d4d7df5cSMike Makonnen.\" 1. Redistributions of source code must retain the above copyright
8d4d7df5cSMike Makonnen.\"    notice, this list of conditions and the following disclaimer.
9d4d7df5cSMike Makonnen.\" 2. Redistributions in binary form must reproduce the above copyright
10d4d7df5cSMike Makonnen.\"    notice, this list of conditions and the following disclaimer in the
11d4d7df5cSMike Makonnen.\"    documentation and/or other materials provided with the distribution.
12d4d7df5cSMike Makonnen.\"
13d4d7df5cSMike Makonnen.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14d4d7df5cSMike Makonnen.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15d4d7df5cSMike Makonnen.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16d4d7df5cSMike Makonnen.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17d4d7df5cSMike Makonnen.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18d4d7df5cSMike Makonnen.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19d4d7df5cSMike Makonnen.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20d4d7df5cSMike Makonnen.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21d4d7df5cSMike Makonnen.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22d4d7df5cSMike Makonnen.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23d4d7df5cSMike Makonnen.\" SUCH DAMAGE.
24d4d7df5cSMike Makonnen.\"
25d4d7df5cSMike Makonnen.\" $FreeBSD$
26d4d7df5cSMike Makonnen.\"
27*b6413b6dSPedro F. Giffuni.Dd August 17, 2018
28715a0284SRuslan Ermilov.Dt PTHREAD_BARRIER 3
29d4d7df5cSMike Makonnen.Os
30d4d7df5cSMike Makonnen.Sh NAME
31715a0284SRuslan Ermilov.Nm pthread_barrier_destroy , pthread_barrier_init , pthread_barrier_wait
32d4d7df5cSMike Makonnen.Nd "destroy, initialize or wait on a barrier object"
33d4d7df5cSMike Makonnen.Sh LIBRARY
34d4d7df5cSMike Makonnen.Lb libpthread
35d4d7df5cSMike Makonnen.Sh SYNOPSIS
36d4d7df5cSMike Makonnen.In pthread.h
37d4d7df5cSMike Makonnen.Ft int
38d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy "pthread_barrier_t *barrier"
39d4d7df5cSMike Makonnen.Ft int
40*b6413b6dSPedro F. Giffuni.Fn pthread_barrier_init "pthread_barrier_t *restrict barrier" "const pthread_barrierattr_t *attr" "unsigned count"
41d4d7df5cSMike Makonnen.Ft int
42d4d7df5cSMike Makonnen.Fn pthread_barrier_wait "pthread_barrier_t *barrier"
43d4d7df5cSMike Makonnen.Sh DESCRIPTION
44d4d7df5cSMike MakonnenThe
45d4d7df5cSMike Makonnen.Fn pthread_barrier_init
46d4d7df5cSMike Makonnenfunction will initialize
47d4d7df5cSMike Makonnen.Fa barrier
48d4d7df5cSMike Makonnenwith attributes specified in
49d4d7df5cSMike Makonnen.Fa attr ,
50715a0284SRuslan Ermilovor if it is
51715a0284SRuslan Ermilov.Dv NULL ,
52d4d7df5cSMike Makonnenwith default attributes.
53d4d7df5cSMike MakonnenThe number of threads that must call
54d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
55d4d7df5cSMike Makonnenbefore any of the waiting threads can be
56d4d7df5cSMike Makonnenreleased is specified by
57d4d7df5cSMike Makonnen.Fa count .
58d4d7df5cSMike MakonnenThe
59d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
60d4d7df5cSMike Makonnenfunction will destroy
61d4d7df5cSMike Makonnen.Fa barrier
62d4d7df5cSMike Makonnenand release any resources that may have been allocated on its behalf.
63d4d7df5cSMike Makonnen.Pp
64d4d7df5cSMike MakonnenThe
65d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
66d4d7df5cSMike Makonnenfunction will synchronize calling threads at
67d4d7df5cSMike Makonnen.Fa barrier .
68d4d7df5cSMike MakonnenThe threads will be blocked from
69d4d7df5cSMike Makonnenmaking further progress until
70d4d7df5cSMike Makonnena sufficient number of threads calls this function.
71d4d7df5cSMike MakonnenThe number of threads that must call it before
72d4d7df5cSMike Makonnenany of them will be released is determined by the
73d4d7df5cSMike Makonnen.Fa count
74d4d7df5cSMike Makonnenargument to
75d4d7df5cSMike Makonnen.Fn pthread_barrier_init .
76d4d7df5cSMike MakonnenOnce the threads have been released the barrier will be reset.
779cbda590SRuslan Ermilov.Sh IMPLEMENTATION NOTES
7860404ec9SJilles TjoelkerIn
799cbda590SRuslan Ermilov.Lb libthr
809cbda590SRuslan Ermilovthe
819cbda590SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD
829cbda590SRuslan Ermilovreturn value will
839cbda590SRuslan Ermilovalways be returned by the last thread to reach the barrier.
84715a0284SRuslan Ermilov.Sh RETURN VALUES
85d4d7df5cSMike MakonnenIf successful,
86d4d7df5cSMike Makonnenboth
87d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
88d4d7df5cSMike Makonnenand
89d4d7df5cSMike Makonnen.Fn pthread_barrier_init
90d4d7df5cSMike Makonnenwill return zero.
91715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
92d4d7df5cSMike MakonnenIf the call to
93d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
94715a0284SRuslan Ermilovis successful, all but one of the threads will return zero.
95715a0284SRuslan ErmilovThat one thread will return
96715a0284SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD .
97715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
98d4d7df5cSMike Makonnen.Pp
99715a0284SRuslan ErmilovNone of these functions will return
100715a0284SRuslan Ermilov.Er EINTR .
101d4d7df5cSMike Makonnen.Sh ERRORS
102d4d7df5cSMike MakonnenThe
103d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
104d4d7df5cSMike Makonnenfunction will fail if:
105d4d7df5cSMike Makonnen.Bl -tag -width Er
106d4d7df5cSMike Makonnen.It Bq Er EBUSY
107d4d7df5cSMike MakonnenAn attempt was made to destroy
108d4d7df5cSMike Makonnen.Fa barrier
109d4d7df5cSMike Makonnenwhile it was in use.
110d4d7df5cSMike Makonnen.El
111d4d7df5cSMike Makonnen.Pp
112d4d7df5cSMike MakonnenThe
113d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
114d4d7df5cSMike Makonnenand
115d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
116d4d7df5cSMike Makonnenfunctions may fail if:
117d4d7df5cSMike Makonnen.Bl -tag -width Er
118d4d7df5cSMike Makonnen.It Bq Er EINVAL
119d4d7df5cSMike MakonnenThe value specified by
120d4d7df5cSMike Makonnen.Fa barrier
121d4d7df5cSMike Makonnenis invalid.
122d4d7df5cSMike Makonnen.El
123d4d7df5cSMike Makonnen.Pp
124d4d7df5cSMike MakonnenThe
125d4d7df5cSMike Makonnen.Fn pthread_barrier_init
126d4d7df5cSMike Makonnenfunction will fail if:
127d4d7df5cSMike Makonnen.Bl -tag -width Er
128d4d7df5cSMike Makonnen.It Bq Er EAGAIN
129d4d7df5cSMike MakonnenThe system lacks resources,
130d4d7df5cSMike Makonnenother than memory,
131d4d7df5cSMike Makonnento initialize
132d4d7df5cSMike Makonnen.Fa barrier .
133d4d7df5cSMike Makonnen.It Bq Er EINVAL
134d4d7df5cSMike MakonnenThe
135d4d7df5cSMike Makonnen.Fa count
136d4d7df5cSMike Makonnenargument is less than 1.
137d4d7df5cSMike Makonnen.It Bq Er ENOMEM
138d4d7df5cSMike MakonnenInsufficient memory to initialize
139d4d7df5cSMike Makonnen.Fa barrier .
140d4d7df5cSMike Makonnen.El
141d4d7df5cSMike Makonnen.Sh SEE ALSO
142d4d7df5cSMike Makonnen.Xr pthread_barrierattr 3
143d4d7df5cSMike Makonnen.Sh HISTORY
144d4d7df5cSMike MakonnenThe
145d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy ,
146d4d7df5cSMike Makonnen.Fn pthread_barrier_init
147d4d7df5cSMike Makonnenand
148d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
149d4d7df5cSMike Makonnenfunctions first appeared in
1503e9ed1efSRuslan Ermilov.Lb libkse
151d4d7df5cSMike Makonnenin
152d4d7df5cSMike Makonnen.Fx 5.2 ,
153d4d7df5cSMike Makonnenand in
154d4d7df5cSMike Makonnen.Lb libthr
155d4d7df5cSMike Makonnenin
156d4d7df5cSMike Makonnen.Fx 5.3 .
157