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