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_BARRIERATTR 3 29d4d7df5cSMike Makonnen.Os 30d4d7df5cSMike Makonnen.Sh NAME 31715a0284SRuslan Ermilov.Nm pthread_barrierattr_destroy , pthread_barrierattr_getpshared , 32715a0284SRuslan Ermilov.Nm pthread_barrierattr_init , pthread_barrierattr_setpshared 33d4d7df5cSMike Makonnen.Nd "manipulate a barrier attribute object" 34d4d7df5cSMike Makonnen.Sh LIBRARY 35d4d7df5cSMike Makonnen.Lb libpthread 36d4d7df5cSMike Makonnen.Sh SYNOPSIS 37d4d7df5cSMike Makonnen.In pthread.h 38d4d7df5cSMike Makonnen.Ft int 39d4d7df5cSMike Makonnen.Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr" 40d4d7df5cSMike Makonnen.Ft int 41d4d7df5cSMike Makonnen.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *attr" "int *pshared" 42d4d7df5cSMike Makonnen.Ft int 43d4d7df5cSMike Makonnen.Fn pthread_barrierattr_init "pthread_barrierattr_t *attr" 44d4d7df5cSMike Makonnen.Ft int 45d4d7df5cSMike Makonnen.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared" 46d4d7df5cSMike Makonnen.Sh DESCRIPTION 47d4d7df5cSMike MakonnenThe 48d4d7df5cSMike Makonnen.Fn pthread_barrierattr_init 49d4d7df5cSMike Makonnenfunction will initialize 50d4d7df5cSMike Makonnen.Fa attr 51d4d7df5cSMike Makonnenwith default attributes. 52d4d7df5cSMike MakonnenThe 53d4d7df5cSMike Makonnen.Fn pthread_barrierattr_destroy 54d4d7df5cSMike Makonnenfunction will destroy 55d4d7df5cSMike Makonnen.Fa attr 56d4d7df5cSMike Makonnenand release any resources that may have been allocated on its behalf. 57d4d7df5cSMike Makonnen.Pp 58d4d7df5cSMike MakonnenThe 59d4d7df5cSMike Makonnen.Fn pthread_barrierattr_getpshared 60d4d7df5cSMike Makonnenfunction will put the value of the process-shared attribute from 61d4d7df5cSMike Makonnen.Fa attr 62d4d7df5cSMike Makonneninto the memory area pointed to by 63d4d7df5cSMike Makonnen.Fa pshared . 64d4d7df5cSMike MakonnenThe 65d4d7df5cSMike Makonnen.Fn pthread_barrierattr_setpshared 66d4d7df5cSMike Makonnenfunction will set the process-shared attribute of 67d4d7df5cSMike Makonnen.Fa attr 68d4d7df5cSMike Makonnento the value specified in 69d4d7df5cSMike Makonnen.Fa pshared . 70d4d7df5cSMike MakonnenThe argument 71d4d7df5cSMike Makonnen.Fa pshared 72d4d7df5cSMike Makonnenmay have one of the following values: 73d4d7df5cSMike Makonnen.Bl -tag -width ".Dv PTHREAD_PROCESS_PRIVATE" 74d4d7df5cSMike Makonnen.It Dv PTHREAD_PROCESS_PRIVATE 75d4d7df5cSMike MakonnenThe barrier object it is attached to may only be accessed by 76d4d7df5cSMike Makonnenthreads in the same process as the one that created the object. 77d4d7df5cSMike Makonnen.It Dv PTHREAD_PROCESS_SHARED 78d4d7df5cSMike MakonnenThe barrier object it is attached to may be accessed by 79d4d7df5cSMike Makonnenthreads in processes other than the one that created the object. 80d4d7df5cSMike Makonnen.El 81715a0284SRuslan Ermilov.Sh RETURN VALUES 82715a0284SRuslan ErmilovIf successful, all these functions will return zero. 83715a0284SRuslan ErmilovOtherwise, an error number will be returned to indicate the error. 84d4d7df5cSMike Makonnen.Pp 85715a0284SRuslan ErmilovNone of these functions will return 86715a0284SRuslan Ermilov.Er EINTR . 87d4d7df5cSMike Makonnen.Sh ERRORS 88d4d7df5cSMike MakonnenThe 89d4d7df5cSMike Makonnen.Fn pthread_barrierattr_destroy , 90d4d7df5cSMike Makonnen.Fn pthread_barrierattr_getpshared 91d4d7df5cSMike Makonnenand 92d4d7df5cSMike Makonnen.Fn pthread_barrierattr_setpshared 93d4d7df5cSMike Makonnenfunctions may fail if: 94d4d7df5cSMike Makonnen.Bl -tag -width Er 95d4d7df5cSMike Makonnen.It Bq Er EINVAL 96d4d7df5cSMike MakonnenThe value specified by 97d4d7df5cSMike Makonnen.Fa attr 98d4d7df5cSMike Makonnenis invalid. 99d4d7df5cSMike Makonnen.El 100d4d7df5cSMike Makonnen.Pp 101d4d7df5cSMike MakonnenThe 102d4d7df5cSMike Makonnen.Fn pthread_barrierattr_init 103d4d7df5cSMike Makonnenfunction will fail if: 104d4d7df5cSMike Makonnen.Bl -tag -width Er 105d4d7df5cSMike Makonnen.It Bq Er ENOMEM 106d4d7df5cSMike MakonnenInsufficient memory to initialize the barrier attribute object 107d4d7df5cSMike Makonnen.Fa attr . 108d4d7df5cSMike Makonnen.El 109d4d7df5cSMike Makonnen.Pp 110d4d7df5cSMike MakonnenThe 111d4d7df5cSMike Makonnen.Fn pthread_barrierattr_setpshared 112d4d7df5cSMike Makonnenfunction will fail if: 113d4d7df5cSMike Makonnen.Bl -tag -width Er 114d4d7df5cSMike Makonnen.It Bq Er EINVAL 115d4d7df5cSMike MakonnenThe value specified in 116d4d7df5cSMike Makonnen.Fa pshared 117d4d7df5cSMike Makonnenis not one of the allowed values. 118d4d7df5cSMike Makonnen.El 119d4d7df5cSMike Makonnen.Sh SEE ALSO 120d4d7df5cSMike Makonnen.Xr pthread_barrier_destroy 3 , 121d4d7df5cSMike Makonnen.Xr pthread_barrier_init 3 , 122715a0284SRuslan Ermilov.Xr pthread_barrier_wait 3 123d4d7df5cSMike Makonnen.Sh HISTORY 124d4d7df5cSMike MakonnenThe 125715a0284SRuslan Ermilov.Fn pthread_barrierattr_* 126d4d7df5cSMike Makonnenfunctions first appeared in 1273e9ed1efSRuslan Ermilov.Lb libkse 128d4d7df5cSMike Makonnenin 129d4d7df5cSMike Makonnen.Fx 5.2 , 130d4d7df5cSMike Makonnenand in 131d4d7df5cSMike Makonnen.Lb libthr 132d4d7df5cSMike Makonnenin 133d4d7df5cSMike Makonnen.Fx 5.3 . 134d4d7df5cSMike Makonnen.Sh BUGS 135d4d7df5cSMike MakonnenThe implementation of 136715a0284SRuslan Ermilovbarriers 137d4d7df5cSMike Makonnendoes not fully conform to 138d4d7df5cSMike Makonnen.St -p1003.2 139d4d7df5cSMike Makonnenbecause the process-shared attribute is ignored in 140d4d7df5cSMike Makonnen.Lb libthr , 141d4d7df5cSMike Makonnenand in 1423e9ed1efSRuslan Ermilov.Lb libkse ; 143d4d7df5cSMike Makonnenif any value other than 144d4d7df5cSMike Makonnen.Dv PTHREAD_PROCESSES_PRIVATE 145d4d7df5cSMike Makonnenis specified in a call to 146715a0284SRuslan Ermilov.Fn pthread_barrierattr_setpshared , 147715a0284SRuslan Ermilovit will return 148715a0284SRuslan Ermilov.Er EINVAL . 149