1.\" Copyright (C) 2000 Jason Evans <jasone@FreeBSD.org>. 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(s), this list of conditions and the following disclaimer as 9.\" the first lines of this file unmodified other than the possible 10.\" addition of one or more copyright notices. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice(s), this list of conditions and the following disclaimer in 13.\" the documentation and/or other materials provided with the 14.\" distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY 17.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE 20.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27.\" 28.\" $FreeBSD$ 29.Dd April 28, 2000 30.Dt PTHREAD_ATTR 3 31.Os 32.Sh NAME 33.Nm pthread_attr_init , 34.Nm pthread_attr_destroy , 35.Nm pthread_attr_setstack , 36.Nm pthread_attr_getstack , 37.Nm pthread_attr_setstacksize , 38.Nm pthread_attr_getstacksize , 39.Nm pthread_attr_setguardsize , 40.Nm pthread_attr_getguardsize , 41.Nm pthread_attr_setstackaddr , 42.Nm pthread_attr_getstackaddr , 43.Nm pthread_attr_setdetachstate , 44.Nm pthread_attr_getdetachstate , 45.Nm pthread_attr_setinheritsched , 46.Nm pthread_attr_getinheritsched , 47.Nm pthread_attr_setschedparam , 48.Nm pthread_attr_getschedparam , 49.Nm pthread_attr_setschedpolicy , 50.Nm pthread_attr_getschedpolicy , 51.Nm pthread_attr_setscope , 52.Nm pthread_attr_getscope 53.Nd thread attribute operations 54.Sh LIBRARY 55.Lb libpthread 56.Lb libthr 57.Sh SYNOPSIS 58.In pthread.h 59.Ft int 60.Fn pthread_attr_init "pthread_attr_t *attr" 61.Ft int 62.Fn pthread_attr_destroy "pthread_attr_t *attr" 63.Ft int 64.Fn pthread_attr_setstack "pthread_attr_t *attr" " void *stackaddr" "size_t stacksize" 65.Ft int 66.Fn pthread_attr_getstack "const pthread_attr_t * restrict attr" "void ** restrict stackaddr" "size_t * restrict stacksize" 67.Ft int 68.Fn pthread_attr_setstacksize "pthread_attr_t *attr" "size_t stacksize" 69.Ft int 70.Fn pthread_attr_getstacksize "const pthread_attr_t *attr" "size_t *stacksize" 71.Ft int 72.Fn pthread_attr_setguardsize "pthread_attr_t *attr" "size_t guardsize" 73.Ft int 74.Fn pthread_attr_getguardsize "const pthread_attr_t *attr" "size_t *guardsize" 75.Ft int 76.Fn pthread_attr_setstackaddr "pthread_attr_t *attr" "void *stackaddr" 77.Ft int 78.Fn pthread_attr_getstackaddr "const pthread_attr_t *attr" "void **stackaddr" 79.Ft int 80.Fn pthread_attr_setdetachstate "pthread_attr_t *attr" "int detachstate" 81.Ft int 82.Fn pthread_attr_getdetachstate "const pthread_attr_t *attr" "int *detachstate" 83.Ft int 84.Fn pthread_attr_setinheritsched "pthread_attr_t *attr" "int inheritsched" 85.Ft int 86.Fn pthread_attr_getinheritsched "const pthread_attr_t *attr" "int *inheritsched" 87.Ft int 88.Fn pthread_attr_setschedparam "pthread_attr_t *attr" "const struct sched_param *param" 89.Ft int 90.Fn pthread_attr_getschedparam "const pthread_attr_t *attr" "struct sched_param *param" 91.Ft int 92.Fn pthread_attr_setschedpolicy "pthread_attr_t *attr" "int policy" 93.Ft int 94.Fn pthread_attr_getschedpolicy "const pthread_attr_t *attr" "int *policy" 95.Ft int 96.Fn pthread_attr_setscope "pthread_attr_t *attr" "int contentionscope" 97.Ft int 98.Fn pthread_attr_getscope "const pthread_attr_t *attr" "int *contentionscope" 99.Sh DESCRIPTION 100Thread attributes are used to specify parameters to 101.Fn pthread_create . 102One attribute object can be used in multiple calls to 103.Fn pthread_create , 104with or without modifications between calls. 105.Pp 106The 107.Fn pthread_attr_init 108function initializes 109.Fa attr 110with all the default thread attributes. 111.Pp 112The 113.Fn pthread_attr_destroy 114function destroys 115.Fa attr . 116.Pp 117The 118.Fn pthread_attr_set* 119functions set the attribute that corresponds to each function name. 120.Pp 121The 122.Fn pthread_attr_get* 123functions copy the value of the attribute that corresponds to each function name 124to the location pointed to by the second function parameter. 125.Sh RETURN VALUES 126If successful, these functions return 0. 127Otherwise, an error number is returned to indicate the error. 128.Sh ERRORS 129The 130.Fn pthread_attr_init 131function will fail if: 132.Bl -tag -width Er 133.It Bq Er ENOMEM 134Out of memory. 135.El 136.Pp 137The 138.Fn pthread_attr_destroy 139function will fail if: 140.Bl -tag -width Er 141.It Bq Er EINVAL 142Invalid value for 143.Fa attr . 144.El 145.Pp 146The 147.Fn pthread_attr_setstacksize 148and 149.Fn pthread_attr_setstack 150functions will fail if: 151.Bl -tag -width Er 152.It Bq Er EINVAL 153.Fa stacksize 154is less than 155.Dv PTHREAD_STACK_MIN . 156.El 157.Pp 158The 159.Fn pthread_attr_setdetachstate 160function will fail if: 161.Bl -tag -width Er 162.It Bq Er EINVAL 163Invalid value for 164.Fa detachstate . 165.El 166.Pp 167The 168.Fn pthread_attr_setinheritsched 169function will fail if: 170.Bl -tag -width Er 171.It Bq Er EINVAL 172Invalid value for 173.Fa attr . 174.El 175.Pp 176The 177.Fn pthread_attr_setschedparam 178function will fail if: 179.Bl -tag -width Er 180.It Bq Er EINVAL 181Invalid value for 182.Fa attr . 183.It Bq Er ENOTSUP 184Invalid value for 185.Fa param . 186.El 187.Pp 188The 189.Fn pthread_attr_setschedpolicy 190function will fail if: 191.Bl -tag -width Er 192.It Bq Er EINVAL 193Invalid value for 194.Fa attr . 195.It Bq Er ENOTSUP 196Invalid or unsupported value for 197.Fa policy . 198.El 199.Pp 200The 201.Fn pthread_attr_setscope 202function will fail if: 203.Bl -tag -width Er 204.It Bq Er EINVAL 205Invalid value for 206.Fa attr . 207.It Bq Er ENOTSUP 208Invalid or unsupported value for 209.Fa contentionscope . 210.El 211.Sh SEE ALSO 212.Xr pthread_attr_get_np 3 , 213.Xr pthread_create 3 214.Sh STANDARDS 215The 216.Fn pthread_attr_init , 217.Fn pthread_attr_destroy , 218.Fn pthread_attr_setstacksize , 219.Fn pthread_attr_getstacksize , 220.Fn pthread_attr_setstackaddr , 221.Fn pthread_attr_getstackaddr , 222.Fn pthread_attr_setdetachstate , 223and 224.Fn pthread_attr_getdetachstate 225functions conform to 226.St -p1003.1-96 227.Pp 228The 229.Fn pthread_attr_setinheritsched , 230.Fn pthread_attr_getinheritsched , 231.Fn pthread_attr_setschedparam , 232.Fn pthread_attr_getschedparam , 233.Fn pthread_attr_setschedpolicy , 234.Fn pthread_attr_getschedpolicy , 235.Fn pthread_attr_setscope , 236and 237.Fn pthread_attr_getscope 238functions conform to 239.St -susv2 240