xref: /openbsd-src/lib/libpthread/man/pthread_barrier_init.3 (revision 41ce3b17e73f6b7d2d9e1a3d961e4bab2d895cb5)
1*41ce3b17Snaddy.\"	$OpenBSD: pthread_barrier_init.3,v 1.5 2022/03/31 17:27:17 naddy Exp $
2c9961bb2Spirofti.\"
38855e28cSpirofti.\" Copyright (c) 2012 Paul Irofti <paul@irofti.net>
4c9961bb2Spirofti.\"
5c9961bb2Spirofti.\" Permission to use, copy, modify, and distribute this software for any
6c9961bb2Spirofti.\" purpose with or without fee is hereby granted, provided that the above
7c9961bb2Spirofti.\" copyright notice and this permission notice appear in all copies.
8c9961bb2Spirofti.\"
9c9961bb2Spirofti.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10c9961bb2Spirofti.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11c9961bb2Spirofti.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12c9961bb2Spirofti.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13c9961bb2Spirofti.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14c9961bb2Spirofti.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15c9961bb2Spirofti.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16c9961bb2Spirofti.\"
17c9961bb2Spirofti.\"
18*41ce3b17Snaddy.Dd $Mdocdate: March 31 2022 $
19c9961bb2Spirofti.Dt PTHREAD_BARRIER_INIT 3
20c9961bb2Spirofti.Os
21c9961bb2Spirofti.Sh NAME
22c9961bb2Spirofti.Nm pthread_barrier_init ,
23c9961bb2Spirofti.Nm pthread_barrier_destroy
24c9961bb2Spirofti.Nd initialize and destroy a barrier object
25c9961bb2Spirofti.Sh SYNOPSIS
2686f9d4cdStedu.In pthread.h
27c9961bb2Spirofti.Ft int
28c9961bb2Spirofti.Fn pthread_barrier_init "pthread_barrier_t *barrier" "pthread_barrierattr_t *attr" "unsigned int count"
29c9961bb2Spirofti.Ft int
30c9961bb2Spirofti.Fn pthread_barrier_destroy "pthread_barrier_t *barrier"
31c9961bb2Spirofti.Sh DESCRIPTION
32c9961bb2SpiroftiThe
33c9961bb2Spirofti.Fn pthread_barrier_init
34c9961bb2Spiroftifunction creates a new barrier object, with attributes specified with
35c9961bb2Spirofti.Fa attr
36c9961bb2Spiroftiand with a threshold specified with
37c9961bb2Spirofti.Fa count .
38c9961bb2SpiroftiIf
39c9961bb2Spirofti.Fa attr
40c9961bb2Spiroftiis
41*41ce3b17Snaddy.Dv NULL ,
426f2b369cSjmcthe default attributes are used.
436f2b369cSjmcThe
44c9961bb2Spirofti.Fa count
45c9961bb2Spiroftiargument is later used by the
46c9961bb2Spirofti.Fn pthread_barrier_wait
47c9961bb2Spiroftifunction to check if the required number of threads reached the barrier.
48c9961bb2Spirofti.Pp
49c9961bb2SpiroftiThe
50c9961bb2Spirofti.Fn pthread_barrier_destroy
51c9961bb2Spiroftifunction frees the resources allocated for
52c9961bb2Spirofti.Fa barrier .
53c9961bb2Spirofti.Sh RETURN VALUES
54c9961bb2SpiroftiIf successful,
55c9961bb2Spirofti.Fn pthread_barrier_init
56c9961bb2Spiroftiand
57c9961bb2Spirofti.Fn pthread_barrier_destroy
586f2b369cSjmcreturn zero;
596f2b369cSjmcotherwise an error number is returned to indicate the error.
60c9961bb2Spirofti.Sh ERRORS
61c9961bb2Spirofti.Fn pthread_barrier_init
62c9961bb2Spiroftiwill fail if:
63c9961bb2Spirofti.Bl -tag -width Er
64c9961bb2Spirofti.It Bq Er EINVAL
65c9961bb2SpiroftiThe value specified by
66c9961bb2Spirofti.Fa barrier
67c9961bb2Spiroftior
68c9961bb2Spirofti.Fa attr
69c9961bb2Spiroftiis invalid.
70c9961bb2Spirofti.It Bq Er ENOMEM
71c9961bb2SpiroftiThe process cannot allocate enough memory to create another barrier object.
72c9961bb2Spirofti.It Bq Er ENOTSUP
73c9961bb2SpiroftiThe attributes specified by
74c9961bb2Spirofti.Fa attr
75c9961bb2Spiroftiare not supported by the current implementation.
76c9961bb2Spirofti.El
77c9961bb2Spirofti.Pp
78c9961bb2Spirofti.Fn pthread_barrier_destroy
79c9961bb2Spiroftiwill fail if:
80c9961bb2Spirofti.Bl -tag -width Er
81c9961bb2Spirofti.It Bq Er EINVAL
82c9961bb2SpiroftiThe value specified by
83c9961bb2Spirofti.Fa barrier
84c9961bb2Spiroftiis invalid.
85c9961bb2Spirofti.It Bq Er EBUSY
86c9961bb2SpiroftiThere are still threads waiting on the barrier.
87c9961bb2Spirofti.El
88c9961bb2Spirofti.Sh SEE ALSO
89c9961bb2Spirofti.Xr pthread_barrier_wait 3 ,
906f2b369cSjmc.Xr pthread_barrierattr_getpshared 3 ,
916f2b369cSjmc.Xr pthread_barrierattr_init 3
92c9961bb2Spirofti.Sh STANDARDS
93c9961bb2Spirofti.Fn pthread_barrier_init
94c9961bb2Spiroftiand
95c9961bb2Spirofti.Fn pthread_barrier_destroy
96c9961bb2Spirofticonform to
97c9961bb2Spirofti.St -p1003.1-2008 .
98c9961bb2Spirofti.Sh BUGS
99c9961bb2SpiroftiCurrently only private barriers are supported and the pshared attribute is
100c9961bb2Spiroftialways set that way.
101c9961bb2SpiroftiAny attempts to change that value will trigger
102c9961bb2Spirofti.Er ENOTSUP .
103