xref: /freebsd/share/man/man3/pthread_barrier_destroy.3 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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.\"
25*b6413b6dSPedro F. Giffuni.Dd August 17, 2018
26715a0284SRuslan Ermilov.Dt PTHREAD_BARRIER 3
27d4d7df5cSMike Makonnen.Os
28d4d7df5cSMike Makonnen.Sh NAME
29715a0284SRuslan Ermilov.Nm pthread_barrier_destroy , pthread_barrier_init , pthread_barrier_wait
30d4d7df5cSMike Makonnen.Nd "destroy, initialize or wait on a barrier object"
31d4d7df5cSMike Makonnen.Sh LIBRARY
32d4d7df5cSMike Makonnen.Lb libpthread
33d4d7df5cSMike Makonnen.Sh SYNOPSIS
34d4d7df5cSMike Makonnen.In pthread.h
35d4d7df5cSMike Makonnen.Ft int
36d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy "pthread_barrier_t *barrier"
37d4d7df5cSMike Makonnen.Ft int
38*b6413b6dSPedro F. Giffuni.Fn pthread_barrier_init "pthread_barrier_t *restrict barrier" "const pthread_barrierattr_t *attr" "unsigned count"
39d4d7df5cSMike Makonnen.Ft int
40d4d7df5cSMike Makonnen.Fn pthread_barrier_wait "pthread_barrier_t *barrier"
41d4d7df5cSMike Makonnen.Sh DESCRIPTION
42d4d7df5cSMike MakonnenThe
43d4d7df5cSMike Makonnen.Fn pthread_barrier_init
44d4d7df5cSMike Makonnenfunction will initialize
45d4d7df5cSMike Makonnen.Fa barrier
46d4d7df5cSMike Makonnenwith attributes specified in
47d4d7df5cSMike Makonnen.Fa attr ,
48715a0284SRuslan Ermilovor if it is
49715a0284SRuslan Ermilov.Dv NULL ,
50d4d7df5cSMike Makonnenwith default attributes.
51d4d7df5cSMike MakonnenThe number of threads that must call
52d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
53d4d7df5cSMike Makonnenbefore any of the waiting threads can be
54d4d7df5cSMike Makonnenreleased is specified by
55d4d7df5cSMike Makonnen.Fa count .
56d4d7df5cSMike MakonnenThe
57d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
58d4d7df5cSMike Makonnenfunction will destroy
59d4d7df5cSMike Makonnen.Fa barrier
60d4d7df5cSMike Makonnenand release any resources that may have been allocated on its behalf.
61d4d7df5cSMike Makonnen.Pp
62d4d7df5cSMike MakonnenThe
63d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
64d4d7df5cSMike Makonnenfunction will synchronize calling threads at
65d4d7df5cSMike Makonnen.Fa barrier .
66d4d7df5cSMike MakonnenThe threads will be blocked from
67d4d7df5cSMike Makonnenmaking further progress until
68d4d7df5cSMike Makonnena sufficient number of threads calls this function.
69d4d7df5cSMike MakonnenThe number of threads that must call it before
70d4d7df5cSMike Makonnenany of them will be released is determined by the
71d4d7df5cSMike Makonnen.Fa count
72d4d7df5cSMike Makonnenargument to
73d4d7df5cSMike Makonnen.Fn pthread_barrier_init .
74d4d7df5cSMike MakonnenOnce the threads have been released the barrier will be reset.
759cbda590SRuslan Ermilov.Sh IMPLEMENTATION NOTES
7660404ec9SJilles TjoelkerIn
779cbda590SRuslan Ermilov.Lb libthr
789cbda590SRuslan Ermilovthe
799cbda590SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD
809cbda590SRuslan Ermilovreturn value will
819cbda590SRuslan Ermilovalways be returned by the last thread to reach the barrier.
82715a0284SRuslan Ermilov.Sh RETURN VALUES
83d4d7df5cSMike MakonnenIf successful,
84d4d7df5cSMike Makonnenboth
85d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
86d4d7df5cSMike Makonnenand
87d4d7df5cSMike Makonnen.Fn pthread_barrier_init
88d4d7df5cSMike Makonnenwill return zero.
89715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
90d4d7df5cSMike MakonnenIf the call to
91d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
92715a0284SRuslan Ermilovis successful, all but one of the threads will return zero.
93715a0284SRuslan ErmilovThat one thread will return
94715a0284SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD .
95715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
96d4d7df5cSMike Makonnen.Pp
97715a0284SRuslan ErmilovNone of these functions will return
98715a0284SRuslan Ermilov.Er EINTR .
99d4d7df5cSMike Makonnen.Sh ERRORS
100d4d7df5cSMike MakonnenThe
101d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
102d4d7df5cSMike Makonnenfunction will fail if:
103d4d7df5cSMike Makonnen.Bl -tag -width Er
104d4d7df5cSMike Makonnen.It Bq Er EBUSY
105d4d7df5cSMike MakonnenAn attempt was made to destroy
106d4d7df5cSMike Makonnen.Fa barrier
107d4d7df5cSMike Makonnenwhile it was in use.
108d4d7df5cSMike Makonnen.El
109d4d7df5cSMike Makonnen.Pp
110d4d7df5cSMike MakonnenThe
111d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
112d4d7df5cSMike Makonnenand
113d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
114d4d7df5cSMike Makonnenfunctions may fail if:
115d4d7df5cSMike Makonnen.Bl -tag -width Er
116d4d7df5cSMike Makonnen.It Bq Er EINVAL
117d4d7df5cSMike MakonnenThe value specified by
118d4d7df5cSMike Makonnen.Fa barrier
119d4d7df5cSMike Makonnenis invalid.
120d4d7df5cSMike Makonnen.El
121d4d7df5cSMike Makonnen.Pp
122d4d7df5cSMike MakonnenThe
123d4d7df5cSMike Makonnen.Fn pthread_barrier_init
124d4d7df5cSMike Makonnenfunction will fail if:
125d4d7df5cSMike Makonnen.Bl -tag -width Er
126d4d7df5cSMike Makonnen.It Bq Er EAGAIN
127d4d7df5cSMike MakonnenThe system lacks resources,
128d4d7df5cSMike Makonnenother than memory,
129d4d7df5cSMike Makonnento initialize
130d4d7df5cSMike Makonnen.Fa barrier .
131d4d7df5cSMike Makonnen.It Bq Er EINVAL
132d4d7df5cSMike MakonnenThe
133d4d7df5cSMike Makonnen.Fa count
134d4d7df5cSMike Makonnenargument is less than 1.
135d4d7df5cSMike Makonnen.It Bq Er ENOMEM
136d4d7df5cSMike MakonnenInsufficient memory to initialize
137d4d7df5cSMike Makonnen.Fa barrier .
138d4d7df5cSMike Makonnen.El
139d4d7df5cSMike Makonnen.Sh SEE ALSO
140d4d7df5cSMike Makonnen.Xr pthread_barrierattr 3
141d4d7df5cSMike Makonnen.Sh HISTORY
142d4d7df5cSMike MakonnenThe
143d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy ,
144d4d7df5cSMike Makonnen.Fn pthread_barrier_init
145d4d7df5cSMike Makonnenand
146d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
147d4d7df5cSMike Makonnenfunctions first appeared in
1483e9ed1efSRuslan Ermilov.Lb libkse
149d4d7df5cSMike Makonnenin
150d4d7df5cSMike Makonnen.Fx 5.2 ,
151d4d7df5cSMike Makonnenand in
152d4d7df5cSMike Makonnen.Lb libthr
153d4d7df5cSMike Makonnenin
154d4d7df5cSMike Makonnen.Fx 5.3 .
155