xref: /freebsd/share/man/man3/pthread_barrier_destroy.3 (revision 3e9ed1efb85a632c2b4bee70f3ae37a464aba6ad)
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.\"
27d4d7df5cSMike Makonnen.Dd February 19, 2004
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
404294a24eSRuslan Ermilov.Fn pthread_barrier_init "pthread_barrier_t *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
789cbda590SRuslan ErmilovIn both
793e9ed1efSRuslan Ermilov.Lb libkse
809cbda590SRuslan Ermilovand
819cbda590SRuslan Ermilov.Lb libthr
829cbda590SRuslan Ermilovthe
839cbda590SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD
849cbda590SRuslan Ermilovreturn value will
859cbda590SRuslan Ermilovalways be returned by the last thread to reach the barrier.
86715a0284SRuslan Ermilov.Sh RETURN VALUES
87d4d7df5cSMike MakonnenIf successful,
88d4d7df5cSMike Makonnenboth
89d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
90d4d7df5cSMike Makonnenand
91d4d7df5cSMike Makonnen.Fn pthread_barrier_init
92d4d7df5cSMike Makonnenwill return zero.
93715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
94d4d7df5cSMike MakonnenIf the call to
95d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
96715a0284SRuslan Ermilovis successful, all but one of the threads will return zero.
97715a0284SRuslan ErmilovThat one thread will return
98715a0284SRuslan Ermilov.Dv PTHREAD_BARRIER_SERIAL_THREAD .
99715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error.
100d4d7df5cSMike Makonnen.Pp
101715a0284SRuslan ErmilovNone of these functions will return
102715a0284SRuslan Ermilov.Er EINTR .
103d4d7df5cSMike Makonnen.Sh ERRORS
104d4d7df5cSMike MakonnenThe
105d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
106d4d7df5cSMike Makonnenfunction will fail if:
107d4d7df5cSMike Makonnen.Bl -tag -width Er
108d4d7df5cSMike Makonnen.It Bq Er EBUSY
109d4d7df5cSMike MakonnenAn attempt was made to destroy
110d4d7df5cSMike Makonnen.Fa barrier
111d4d7df5cSMike Makonnenwhile it was in use.
112d4d7df5cSMike Makonnen.El
113d4d7df5cSMike Makonnen.Pp
114d4d7df5cSMike MakonnenThe
115d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy
116d4d7df5cSMike Makonnenand
117d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
118d4d7df5cSMike Makonnenfunctions may fail if:
119d4d7df5cSMike Makonnen.Bl -tag -width Er
120d4d7df5cSMike Makonnen.It Bq Er EINVAL
121d4d7df5cSMike MakonnenThe value specified by
122d4d7df5cSMike Makonnen.Fa barrier
123d4d7df5cSMike Makonnenis invalid.
124d4d7df5cSMike Makonnen.El
125d4d7df5cSMike Makonnen.Pp
126d4d7df5cSMike MakonnenThe
127d4d7df5cSMike Makonnen.Fn pthread_barrier_init
128d4d7df5cSMike Makonnenfunction will fail if:
129d4d7df5cSMike Makonnen.Bl -tag -width Er
130d4d7df5cSMike Makonnen.It Bq Er EAGAIN
131d4d7df5cSMike MakonnenThe system lacks resources,
132d4d7df5cSMike Makonnenother than memory,
133d4d7df5cSMike Makonnento initialize
134d4d7df5cSMike Makonnen.Fa barrier .
135d4d7df5cSMike Makonnen.It Bq Er EINVAL
136d4d7df5cSMike MakonnenThe
137d4d7df5cSMike Makonnen.Fa count
138d4d7df5cSMike Makonnenargument is less than 1.
139d4d7df5cSMike Makonnen.It Bq Er ENOMEM
140d4d7df5cSMike MakonnenInsufficient memory to initialize
141d4d7df5cSMike Makonnen.Fa barrier .
142d4d7df5cSMike Makonnen.El
143d4d7df5cSMike Makonnen.Sh SEE ALSO
144d4d7df5cSMike Makonnen.Xr pthread_barrierattr 3
145d4d7df5cSMike Makonnen.Sh HISTORY
146d4d7df5cSMike MakonnenThe
147d4d7df5cSMike Makonnen.Fn pthread_barrier_destroy ,
148d4d7df5cSMike Makonnen.Fn pthread_barrier_init
149d4d7df5cSMike Makonnenand
150d4d7df5cSMike Makonnen.Fn pthread_barrier_wait
151d4d7df5cSMike Makonnenfunctions first appeared in
1523e9ed1efSRuslan Ermilov.Lb libkse
153d4d7df5cSMike Makonnenin
154d4d7df5cSMike Makonnen.Fx 5.2 ,
155d4d7df5cSMike Makonnenand in
156d4d7df5cSMike Makonnen.Lb libthr
157d4d7df5cSMike Makonnenin
158d4d7df5cSMike Makonnen.Fx 5.3 .
159