1.\" Copyright (c) 2004 Michael Telahun Makonnen 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd February 19, 2004 28.Dt PTHREAD_BARRIERATTR 3 29.Os 30.Sh NAME 31.Nm pthread_barrierattr_destroy , pthread_barrierattr_getpshared , 32.Nm pthread_barrierattr_init , pthread_barrierattr_setpshared 33.Nd "manipulate a barrier attribute object" 34.Sh LIBRARY 35.Lb libpthread 36.Sh SYNOPSIS 37.In pthread.h 38.Ft int 39.Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr" 40.Ft int 41.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *attr" "int *pshared" 42.Ft int 43.Fn pthread_barrierattr_init "pthread_barrierattr_t *attr" 44.Ft int 45.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared" 46.Sh DESCRIPTION 47The 48.Fn pthread_barrierattr_init 49function will initialize 50.Fa attr 51with default attributes. 52The 53.Fn pthread_barrierattr_destroy 54function will destroy 55.Fa attr 56and release any resources that may have been allocated on its behalf. 57.Pp 58The 59.Fn pthread_barrierattr_getpshared 60function will put the value of the process-shared attribute from 61.Fa attr 62into the memory area pointed to by 63.Fa pshared . 64The 65.Fn pthread_barrierattr_setpshared 66function will set the process-shared attribute of 67.Fa attr 68to the value specified in 69.Fa pshared . 70The argument 71.Fa pshared 72may have one of the following values: 73.Bl -tag -width ".Dv PTHREAD_PROCESS_PRIVATE" 74.It Dv PTHREAD_PROCESS_PRIVATE 75The barrier object it is attached to may only be accessed by 76threads in the same process as the one that created the object. 77.It Dv PTHREAD_PROCESS_SHARED 78The barrier object it is attached to may be accessed by 79threads in processes other than the one that created the object. 80.El 81.Sh RETURN VALUES 82If successful, all these functions will return zero. 83Otherwise, an error number will be returned to indicate the error. 84.Pp 85None of these functions will return 86.Er EINTR . 87.Sh ERRORS 88The 89.Fn pthread_barrierattr_destroy , 90.Fn pthread_barrierattr_getpshared 91and 92.Fn pthread_barrierattr_setpshared 93functions may fail if: 94.Bl -tag -width Er 95.It Bq Er EINVAL 96The value specified by 97.Fa attr 98is invalid. 99.El 100.Pp 101The 102.Fn pthread_barrierattr_init 103function will fail if: 104.Bl -tag -width Er 105.It Bq Er ENOMEM 106Insufficient memory to initialize the barrier attribute object 107.Fa attr . 108.El 109.Pp 110The 111.Fn pthread_barrierattr_setpshared 112function will fail if: 113.Bl -tag -width Er 114.It Bq Er EINVAL 115The value specified in 116.Fa pshared 117is not one of the allowed values. 118.El 119.Sh SEE ALSO 120.Xr pthread_barrier_destroy 3 , 121.Xr pthread_barrier_init 3 , 122.Xr pthread_barrier_wait 3 123.Sh HISTORY 124The 125.Fn pthread_barrierattr_* 126functions first appeared in 127.Lb libkse 128in 129.Fx 5.2 , 130and in 131.Lb libthr 132in 133.Fx 5.3 . 134.Sh BUGS 135The implementation of 136barriers 137does not fully conform to 138.St -p1003.2 139because the process-shared attribute is ignored in 140.Lb libthr , 141and in 142.Lb libkse ; 143if any value other than 144.Dv PTHREAD_PROCESSES_PRIVATE 145is specified in a call to 146.Fn pthread_barrierattr_setpshared , 147it will return 148.Er EINVAL . 149