1c5e7e03aSRuslan Ermilov.\" Copyright (C) 2000 Jason Evans <jasone@FreeBSD.org>. 2*dab59af3SLi-Wen Hsu.\" Copyright (c) 2021 The FreeBSD Foundation 34c089f4dSJason Evans.\" All rights reserved. 44c089f4dSJason Evans.\" 5be6116fdSKonstantin Belousov.\" Part of this documentation was written by 6be6116fdSKonstantin Belousov.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship 7be6116fdSKonstantin Belousov.\" from the FreeBSD Foundation. 8be6116fdSKonstantin Belousov.\" 94c089f4dSJason Evans.\" Redistribution and use in source and binary forms, with or without 104c089f4dSJason Evans.\" modification, are permitted provided that the following conditions 114c089f4dSJason Evans.\" are met: 124c089f4dSJason Evans.\" 1. Redistributions of source code must retain the above copyright 134c089f4dSJason Evans.\" notice(s), this list of conditions and the following disclaimer as 144c089f4dSJason Evans.\" the first lines of this file unmodified other than the possible 154c089f4dSJason Evans.\" addition of one or more copyright notices. 164c089f4dSJason Evans.\" 2. Redistributions in binary form must reproduce the above copyright 174c089f4dSJason Evans.\" notice(s), this list of conditions and the following disclaimer in 184c089f4dSJason Evans.\" the documentation and/or other materials provided with the 194c089f4dSJason Evans.\" distribution. 204c089f4dSJason Evans.\" 214c089f4dSJason Evans.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY 224c089f4dSJason Evans.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 234c089f4dSJason Evans.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 244c089f4dSJason Evans.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE 254c089f4dSJason Evans.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 264c089f4dSJason Evans.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 274c089f4dSJason Evans.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 284c089f4dSJason Evans.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 294c089f4dSJason Evans.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 304c089f4dSJason Evans.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 314c089f4dSJason Evans.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 324f03a2caSKonstantin Belousov.Dd October 27, 2023 334c089f4dSJason Evans.Dt PTHREAD_MUTEXATTR 3 344c089f4dSJason Evans.Os 354c089f4dSJason Evans.Sh NAME 362a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_init , 372a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_destroy , 382a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_setprioceiling , 392a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_getprioceiling , 402a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_setprotocol , 412a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_getprotocol , 420a6e5fc2SKonstantin Belousov.Nm pthread_mutexattr_setpshared , 430a6e5fc2SKonstantin Belousov.Nm pthread_mutexattr_getpshared , 442a339d9eSKonstantin Belousov.Nm pthread_mutexattr_setrobust , 452a339d9eSKonstantin Belousov.Nm pthread_mutexattr_getrobust , 462a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_settype , 472a53c5ecSAlexey Zelkin.Nm pthread_mutexattr_gettype 484c089f4dSJason Evans.Nd mutex attribute operations 494c089f4dSJason Evans.Sh LIBRARY 50ec7452f1SRuslan Ermilov.Lb libpthread 514c089f4dSJason Evans.Sh SYNOPSIS 5232eef9aeSRuslan Ermilov.In pthread.h 534c089f4dSJason Evans.Ft int 544c089f4dSJason Evans.Fn pthread_mutexattr_init "pthread_mutexattr_t *attr" 554c089f4dSJason Evans.Ft int 564c089f4dSJason Evans.Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr" 574c089f4dSJason Evans.Ft int 589f3b6cdbSKonstantin Belousov.Fo pthread_mutexattr_setprioceiling 599f3b6cdbSKonstantin Belousov.Fa "pthread_mutexattr_t *attr" "int prioceiling" 609f3b6cdbSKonstantin Belousov.Fc 614c089f4dSJason Evans.Ft int 629f3b6cdbSKonstantin Belousov.Fo pthread_mutexattr_getprioceiling 639f3b6cdbSKonstantin Belousov.Fa "const pthread_mutexattr_t *attr" "int *prioceiling" 649f3b6cdbSKonstantin Belousov.Fc 654c089f4dSJason Evans.Ft int 664c089f4dSJason Evans.Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol" 674c089f4dSJason Evans.Ft int 689f3b6cdbSKonstantin Belousov.Fo pthread_mutexattr_getprotocol 699f3b6cdbSKonstantin Belousov.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" 709f3b6cdbSKonstantin Belousov.Fc 714c089f4dSJason Evans.Ft int 720a6e5fc2SKonstantin Belousov.Fo pthread_mutexattr_setpshared 730a6e5fc2SKonstantin Belousov.Fa "pthread_mutexattr_t *attr" "int shared" 740a6e5fc2SKonstantin Belousov.Fc 750a6e5fc2SKonstantin Belousov.Ft int 760a6e5fc2SKonstantin Belousov.Fo pthread_mutexattr_getpshared 770a6e5fc2SKonstantin Belousov.Fa "const pthread_mutexattr_t *attr" "int *shared" 780a6e5fc2SKonstantin Belousov.Fc 790a6e5fc2SKonstantin Belousov.Ft int 802a339d9eSKonstantin Belousov.Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" 812a339d9eSKonstantin Belousov.Ft int 822a339d9eSKonstantin Belousov.Fn pthread_mutexattr_getrobust "pthread_mutexattr_t *attr" "int *robust" 832a339d9eSKonstantin Belousov.Ft int 844c089f4dSJason Evans.Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type" 854c089f4dSJason Evans.Ft int 869f3b6cdbSKonstantin Belousov.Fo pthread_mutexattr_gettype 879f3b6cdbSKonstantin Belousov.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict type" 889f3b6cdbSKonstantin Belousov.Fc 894c089f4dSJason Evans.Sh DESCRIPTION 904c089f4dSJason EvansMutex attributes are used to specify parameters to 914c089f4dSJason Evans.Fn pthread_mutex_init . 924c089f4dSJason EvansOne attribute object can be used in multiple calls to 934c089f4dSJason Evans.Fn pthread_mutex_init , 944c089f4dSJason Evanswith or without modifications between calls. 952a53c5ecSAlexey Zelkin.Pp 964c089f4dSJason EvansThe 974c089f4dSJason Evans.Fn pthread_mutexattr_init 984c089f4dSJason Evansfunction initializes 994c089f4dSJason Evans.Fa attr 1004c089f4dSJason Evanswith all the default mutex attributes. 1012a53c5ecSAlexey Zelkin.Pp 1024c089f4dSJason EvansThe 1034c089f4dSJason Evans.Fn pthread_mutexattr_destroy 1044c089f4dSJason Evansfunction destroys 1054c089f4dSJason Evans.Fa attr . 1062a53c5ecSAlexey Zelkin.Pp 1074c089f4dSJason EvansThe 108be6116fdSKonstantin Belousov.Fn pthread_mutexattr_setprioceiling 109be6116fdSKonstantin Belousovfunction sets the priority ceiling for the mutex, used 110be6116fdSKonstantin Belousovby threads executed under the 111be6116fdSKonstantin Belousov.Dv PTHREAD_PRIO_PROTECT 112be6116fdSKonstantin Belousovprotocol. 113be6116fdSKonstantin Belousov.Pp 114be6116fdSKonstantin BelousovThe 115be6116fdSKonstantin Belousov.Fn pthread_mutexattr_setprotocol 116be6116fdSKonstantin Belousovfunction specifies the protocol to be followed in utilizing mutexes. 117be6116fdSKonstantin BelousovThe 118be6116fdSKonstantin Belousov.Fa protocol 119be6116fdSKonstantin Belousovargument can take one of the following values: 120be6116fdSKonstantin Belousov.Bl -tag -width PTHREAD_PRIO_PROTECT 121be6116fdSKonstantin Belousov.It PTHREAD_PRIO_NONE 122be6116fdSKonstantin BelousovPriority and scheduling of the thread owning this mutex is not 123be6116fdSKonstantin Belousovaffected by its mutex ownership. 124be6116fdSKonstantin Belousov.It PTHREAD_PRIO_INHERIT 125be6116fdSKonstantin BelousovRequest priority-inheritance protocol, where the thread owning the mutex 126be6116fdSKonstantin Belousovis executed at the highest priority among priorities of all threads waiting 127be6116fdSKonstantin Belousovon any mutex owned by this thread. 128be6116fdSKonstantin Belousov.It PTHREAD_PRIO_PROTECT 129be6116fdSKonstantin BelousovRequest priority-inheritance protocol, where the thread owning the mutex 130be6116fdSKonstantin Belousovis executed at highest priority among priorities or priority ceilings of 131be6116fdSKonstantin Belousovall threads waiting on any mutex owned by this thread. 132be6116fdSKonstantin Belousov.El 133be6116fdSKonstantin Belousov.Pp 134be6116fdSKonstantin BelousovThe 1352152c4e2SKonstantin Belousov.Fn pthread_mutexattr_setpshared 1362152c4e2SKonstantin Belousovfunction sets the process-shared attribute of 1372152c4e2SKonstantin Belousov.Fa attr 1382152c4e2SKonstantin Belousovto the value specified in 1392152c4e2SKonstantin Belousov.Fa pshared . 1402152c4e2SKonstantin BelousovThe argument 1412152c4e2SKonstantin Belousov.Fa pshared 1422152c4e2SKonstantin Belousovmay have one of the following values: 1432152c4e2SKonstantin Belousov.Bl -tag -width ".Dv PTHREAD_PROCESS_PRIVATE" 1442152c4e2SKonstantin Belousov.It Dv PTHREAD_PROCESS_PRIVATE 1452152c4e2SKonstantin BelousovThe mutex may only be used by threads in the same process as the one 1462152c4e2SKonstantin Belousovthat created the object. 1472152c4e2SKonstantin Belousov.It Dv PTHREAD_PROCESS_SHARED 1482152c4e2SKonstantin BelousovThe mutex may be used by 1492152c4e2SKonstantin Belousovthreads in processes other than the one that created the object, 1502152c4e2SKonstantin Belousovassuming other processes share access to the memory where the mutex 1512152c4e2SKonstantin Belousovwas allocated. 1522152c4e2SKonstantin Belousov.El 1534f03a2caSKonstantin BelousovSee 1544f03a2caSKonstantin Belousov.Xr libthr 3 1554f03a2caSKonstantin Belousovfor details of the implementation of the shared mutexes, 1564f03a2caSKonstantin Belousovand their limitations. 1572152c4e2SKonstantin Belousov.Pp 1582152c4e2SKonstantin BelousovThe 159be6116fdSKonstantin Belousov.Fn pthread_mutexattr_setrobust 160be6116fdSKonstantin Belousovfunction specifies robustness attribute of the mutex. 161be6116fdSKonstantin BelousovPossible values for the 162be6116fdSKonstantin Belousov.Fa robust 163be6116fdSKonstantin Belousovargument are 164be6116fdSKonstantin Belousov.Bl -tag -width PTHREAD_MUTEX_STALLED 165be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_STALLED 166be6116fdSKonstantin BelousovNo special actions are taken if the thread owning the mutex is terminated 167be6116fdSKonstantin Belousovwithout unlocking the mutex lock. 168be6116fdSKonstantin BelousovThis can lead to deadlocks if no other thread can unlock the mutex. 169be6116fdSKonstantin BelousovThis is the default value. 170be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_ROBUST 171be6116fdSKonstantin BelousovIf the process containing the owning thread of a robust mutex, or owning 172be6116fdSKonstantin Belousovthread, terminates while holding the mutex lock, the next thread that 173be6116fdSKonstantin Belousovacquires the mutex is notified about the termination 174be6116fdSKonstantin Belousovby the return value 175be6116fdSKonstantin Belousov.Ev EOWNERDEAD 176be6116fdSKonstantin Belousovfrom the locking function. 177be6116fdSKonstantin BelousovThen, either 178be6116fdSKonstantin Belousov.Xr pthread_mutex_consistent 3 179be6116fdSKonstantin Belousovcan be used to repair the mutex lock state, or 180be6116fdSKonstantin Belousov.Xr pthread_mutex_unlock 3 181be6116fdSKonstantin Belousovcan unlock the mutex lock but also put it an unusable state, 182be6116fdSKonstantin Belousovwhere all further attempts to acquire it result in the 183be6116fdSKonstantin Belousov.Ev ENOTRECOVERABLE 184be6116fdSKonstantin Belousoverror. 185be6116fdSKonstantin Belousov.El 186be6116fdSKonstantin Belousov.Pp 187be6116fdSKonstantin BelousovThe 188be6116fdSKonstantin Belousov.Fn pthread_mutexattr_settype 189be6116fdSKonstantin Belousovfunction sets the type of the mutex. 190be6116fdSKonstantin BelousovThe type affects the behavior of calls which lock and unlock the mutex. 191be6116fdSKonstantin BelousovThe possible values for the 192be6116fdSKonstantin Belousov.Fa type 193be6116fdSKonstantin Belousovargument are 194be6116fdSKonstantin Belousov.Bl -tag -width PTHREAD_MUTEX_ERRORCHECK 195be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_NORMAL 196be6116fdSKonstantin BelousovBoth recursive locking, and unlocking when the lock is not owned by the current 197be6116fdSKonstantin Belousovthread, cause an error to be returned from the corresponding functions. 198be6116fdSKonstantin BelousovThis matches 199be6116fdSKonstantin Belousov.Dv PTHREAD_MUTEX_ERRORCHECK 200be6116fdSKonstantin Belousovbut somewhat contradicts the behavior mandated by POSIX. 201be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_ERRORCHECK 202be6116fdSKonstantin BelousovBoth recursive locking, and unlocking when the lock is not owned by the current 203be6116fdSKonstantin Belousovthread, cause an error returned from the corresponding functions. 204be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_RECURSIVE 205be6116fdSKonstantin BelousovRecursive locking is allowed. 206be6116fdSKonstantin BelousovAttempt to unlock when current thread is not an owner of the lock causes 207be6116fdSKonstantin Belousovan error to be returned. 208be6116fdSKonstantin Belousov.It PTHREAD_MUTEX_DEFAULT 209be6116fdSKonstantin BelousovThe 210be6116fdSKonstantin Belousov.Fx 211be6116fdSKonstantin Belousovimplementation maps this type to 212be6116fdSKonstantin Belousov.Dv PTHREAD_MUTEX_ERRORCHECK 213be6116fdSKonstantin Belousovtype. 214be6116fdSKonstantin Belousov.El 2152a53c5ecSAlexey Zelkin.Pp 2164c089f4dSJason EvansThe 2174c089f4dSJason Evans.Fn pthread_mutexattr_get* 2184c089f4dSJason Evansfunctions copy the value of the attribute that corresponds to each function name 2194c089f4dSJason Evansto the location pointed to by the second function parameter. 2204c089f4dSJason Evans.Sh RETURN VALUES 2214c089f4dSJason EvansIf successful, these functions return 0. 22257bd0fc6SJens SchweikhardtOtherwise, an error number is returned to indicate the error. 2234c089f4dSJason Evans.Sh ERRORS 2249d09157aSPhilippe CharnierThe 2254c089f4dSJason Evans.Fn pthread_mutexattr_init 2269d09157aSPhilippe Charnierfunction will fail if: 2274c089f4dSJason Evans.Bl -tag -width Er 2284c089f4dSJason Evans.It Bq Er ENOMEM 2294c089f4dSJason EvansOut of memory. 2304c089f4dSJason Evans.El 2312a53c5ecSAlexey Zelkin.Pp 2329d09157aSPhilippe CharnierThe 2334c089f4dSJason Evans.Fn pthread_mutexattr_destroy 2349d09157aSPhilippe Charnierfunction will fail if: 2354c089f4dSJason Evans.Bl -tag -width Er 2364c089f4dSJason Evans.It Bq Er EINVAL 2374c089f4dSJason EvansInvalid value for 2384c089f4dSJason Evans.Fa attr . 2394c089f4dSJason Evans.El 2402a53c5ecSAlexey Zelkin.Pp 2419d09157aSPhilippe CharnierThe 2424c089f4dSJason Evans.Fn pthread_mutexattr_setprioceiling 2439d09157aSPhilippe Charnierfunction will fail if: 2444c089f4dSJason Evans.Bl -tag -width Er 2454c089f4dSJason Evans.It Bq Er EINVAL 2464c089f4dSJason EvansInvalid value for 2474c089f4dSJason Evans.Fa attr , 2484c089f4dSJason Evansor invalid value for 2494c089f4dSJason Evans.Fa prioceiling . 2504c089f4dSJason Evans.El 2512a53c5ecSAlexey Zelkin.Pp 2529d09157aSPhilippe CharnierThe 2534c089f4dSJason Evans.Fn pthread_mutexattr_getprioceiling 2549d09157aSPhilippe Charnierfunction will fail if: 2554c089f4dSJason Evans.Bl -tag -width Er 2564c089f4dSJason Evans.It Bq Er EINVAL 2574c089f4dSJason EvansInvalid value for 2584c089f4dSJason Evans.Fa attr . 2594c089f4dSJason Evans.El 2602a53c5ecSAlexey Zelkin.Pp 2619d09157aSPhilippe CharnierThe 2624c089f4dSJason Evans.Fn pthread_mutexattr_setprotocol 2639d09157aSPhilippe Charnierfunction will fail if: 2644c089f4dSJason Evans.Bl -tag -width Er 2654c089f4dSJason Evans.It Bq Er EINVAL 2664c089f4dSJason EvansInvalid value for 2674c089f4dSJason Evans.Fa attr , 2684c089f4dSJason Evansor invalid value for 2694c089f4dSJason Evans.Fa protocol . 2704c089f4dSJason Evans.El 2712a53c5ecSAlexey Zelkin.Pp 2729d09157aSPhilippe CharnierThe 2734c089f4dSJason Evans.Fn pthread_mutexattr_getprotocol 2749d09157aSPhilippe Charnierfunction will fail if: 2754c089f4dSJason Evans.Bl -tag -width Er 2764c089f4dSJason Evans.It Bq Er EINVAL 2774c089f4dSJason EvansInvalid value for 2784c089f4dSJason Evans.Fa attr . 2794c089f4dSJason Evans.El 2802a53c5ecSAlexey Zelkin.Pp 2819d09157aSPhilippe CharnierThe 2820a6e5fc2SKonstantin Belousov.Fn pthread_mutexattr_setpshared 2830a6e5fc2SKonstantin Belousovfunction will fail if: 2840a6e5fc2SKonstantin Belousov.Bl -tag -width Er 2850a6e5fc2SKonstantin Belousov.It Bq Er EINVAL 2860a6e5fc2SKonstantin BelousovInvalid value for 2870a6e5fc2SKonstantin Belousov.Fa attr , 2880a6e5fc2SKonstantin Belousovor invalid value for 2890a6e5fc2SKonstantin Belousov.Fa shared . 2900a6e5fc2SKonstantin Belousov.El 2910a6e5fc2SKonstantin Belousov.Pp 2920a6e5fc2SKonstantin BelousovThe 2930a6e5fc2SKonstantin Belousov.Fn pthread_mutexattr_getpshared 2940a6e5fc2SKonstantin Belousovfunction will fail if: 2950a6e5fc2SKonstantin Belousov.Bl -tag -width Er 2960a6e5fc2SKonstantin Belousov.It Bq Er EINVAL 2970a6e5fc2SKonstantin BelousovInvalid value for 2980a6e5fc2SKonstantin Belousov.Fa attr . 2990a6e5fc2SKonstantin Belousov.El 3000a6e5fc2SKonstantin Belousov.Pp 3010a6e5fc2SKonstantin BelousovThe 3024c089f4dSJason Evans.Fn pthread_mutexattr_settype 3039d09157aSPhilippe Charnierfunction will fail if: 3044c089f4dSJason Evans.Bl -tag -width Er 3054c089f4dSJason Evans.It Bq Er EINVAL 3064c089f4dSJason EvansInvalid value for 3074c089f4dSJason Evans.Fa attr , 3084c089f4dSJason Evansor invalid value for 3094c089f4dSJason Evans.Fa type . 3104c089f4dSJason Evans.El 3112a53c5ecSAlexey Zelkin.Pp 3129d09157aSPhilippe CharnierThe 3134c089f4dSJason Evans.Fn pthread_mutexattr_gettype 3149d09157aSPhilippe Charnierfunction will fail if: 3154c089f4dSJason Evans.Bl -tag -width Er 3164c089f4dSJason Evans.It Bq Er EINVAL 3174c089f4dSJason EvansInvalid value for 3184c089f4dSJason Evans.Fa attr . 3194c089f4dSJason Evans.El 3202a339d9eSKonstantin Belousov.Pp 3212a339d9eSKonstantin BelousovThe 3222a339d9eSKonstantin Belousov.Fn pthread_mutexattr_setrobust 3232a339d9eSKonstantin Belousovfunction will fail if: 3242a339d9eSKonstantin Belousov.Bl -tag -width Er 3252a339d9eSKonstantin Belousov.It Bq Er EINVAL 3262a339d9eSKonstantin BelousovInvalid value for 3272a339d9eSKonstantin Belousov.Fa attr , 3282a339d9eSKonstantin Belousovor invalid value for 3292a339d9eSKonstantin Belousov.Fa robust . 3302a339d9eSKonstantin Belousov.El 3312a339d9eSKonstantin Belousov.Pp 3322a339d9eSKonstantin BelousovThe 3332a339d9eSKonstantin Belousov.Fn pthread_mutexattr_getrobust 3342a339d9eSKonstantin Belousovfunction will fail if: 3352a339d9eSKonstantin Belousov.Bl -tag -width Er 3362a339d9eSKonstantin Belousov.It Bq Er EINVAL 3372a339d9eSKonstantin BelousovInvalid value for 3382a339d9eSKonstantin Belousov.Fa attr . 3392a339d9eSKonstantin Belousov.El 3404c089f4dSJason Evans.Sh SEE ALSO 3414f03a2caSKonstantin Belousov.Xr libthr 3 , 3424c089f4dSJason Evans.Xr pthread_mutex_init 3 3434c089f4dSJason Evans.Sh STANDARDS 3449d09157aSPhilippe CharnierThe 3454c089f4dSJason Evans.Fn pthread_mutexattr_init 3464c089f4dSJason Evansand 3474c089f4dSJason Evans.Fn pthread_mutexattr_destroy 3489d09157aSPhilippe Charnierfunctions conform to 349589a5e34SRuslan Ermilov.St -p1003.1-96 3502a53c5ecSAlexey Zelkin.Pp 3519d09157aSPhilippe CharnierThe 3524c089f4dSJason Evans.Fn pthread_mutexattr_setprioceiling , 3534c089f4dSJason Evans.Fn pthread_mutexattr_getprioceiling , 3544c089f4dSJason Evans.Fn pthread_mutexattr_setprotocol , 3554c089f4dSJason Evans.Fn pthread_mutexattr_getprotocol , 3560a6e5fc2SKonstantin Belousov.Fn pthread_mutexattr_setpshared , 3570a6e5fc2SKonstantin Belousov.Fn pthread_mutexattr_getpshared , 3584c089f4dSJason Evans.Fn pthread_mutexattr_settype , 3594c089f4dSJason Evansand 3604c089f4dSJason Evans.Fn pthread_mutexattr_gettype 3619d09157aSPhilippe Charnierfunctions conform to 3622a339d9eSKonstantin Belousov.St -susv2 . 3632a339d9eSKonstantin BelousovThe 3642a339d9eSKonstantin Belousov.Fn pthread_mutexattr_setrobust 3652a339d9eSKonstantin Belousovand 3662a339d9eSKonstantin Belousov.Fn pthread_mutexattr_getrobust 3672a339d9eSKonstantin Belousovfunctions conform to 3682a339d9eSKonstantin Belousov.St -susv4 . 369