1*4959ec55SRobert Mustacchi.\" 2*4959ec55SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*4959ec55SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*4959ec55SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*4959ec55SRobert Mustacchi.\" 1.0 of the CDDL. 6*4959ec55SRobert Mustacchi.\" 7*4959ec55SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*4959ec55SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*4959ec55SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*4959ec55SRobert Mustacchi.\" 11*4959ec55SRobert Mustacchi.\" 12*4959ec55SRobert Mustacchi.\" Copyright (c) 2014, Joyent, Inc. 13*4959ec55SRobert Mustacchi.\" 14*4959ec55SRobert Mustacchi.Dd "Dec 22, 2014" 15*4959ec55SRobert Mustacchi.Dt PTHREAD_MUTEXATTR_GETROBUST 3C 16*4959ec55SRobert Mustacchi.Os 17*4959ec55SRobert Mustacchi.Sh NAME 18*4959ec55SRobert Mustacchi.Nm pthread_mutexattr_getrobust , 19*4959ec55SRobert Mustacchi.Nm pthrad_mutexattr_setrobust 20*4959ec55SRobert Mustacchi.Nd get and set the mutex robust attribute 21*4959ec55SRobert Mustacchi.Sh SYNOPSIS 22*4959ec55SRobert Mustacchi.In pthread.h 23*4959ec55SRobert Mustacchi.Ft int 24*4959ec55SRobert Mustacchi.Fo pthread_mutexattr_getrobust 25*4959ec55SRobert Mustacchi.Fa "const pthread_mutexattr_t *attr" 26*4959ec55SRobert Mustacchi.Fa "int *robust" 27*4959ec55SRobert Mustacchi.Fc 28*4959ec55SRobert Mustacchi.Ft int 29*4959ec55SRobert Mustacchi.Fo pthread_mutexattr_setrobust 30*4959ec55SRobert Mustacchi.Fa "pthread_mutexattr_t *attr" 31*4959ec55SRobert Mustacchi.Fa "int robust" 32*4959ec55SRobert Mustacchi.Fc 33*4959ec55SRobert Mustacchi.Sh DESCRIPTION 34*4959ec55SRobert MustacchiThe 35*4959ec55SRobert Mustacchi.Fn pthread_mutexattr_getrobust 36*4959ec55SRobert Mustacchiand 37*4959ec55SRobert Mustacchi.Fn pthread_mtuexattr_setrobust 38*4959ec55SRobert Mustacchifunctions obtain and set a mutex's 39*4959ec55SRobert Mustacchi.Em robust 40*4959ec55SRobert Mustacchiattribute, putting it in, or obtaining it from 41*4959ec55SRobert Mustacchi.Va robust . 42*4959ec55SRobert MustacchiThe valid values for 43*4959ec55SRobert Mustacchi.Va robust 44*4959ec55SRobert Mustacchiinclude: 45*4959ec55SRobert Mustacchi.Bl -tag -width Dv 46*4959ec55SRobert Mustacchi.It Sy PTHREAD_MUTEX_STALLED 47*4959ec55SRobert MustacchiThe mutex referred to by 48*4959ec55SRobert Mustacchi.Va attr 49*4959ec55SRobert Mustacchiis a traditional mutex. When a thread holding an intra-process lock or a 50*4959ec55SRobert Mustacchiprocess holding an inter-process lock crashes or terminates without 51*4959ec55SRobert Mustacchiunlocking the mutex, then the lock will be 52*4959ec55SRobert Mustacchi.Sy stalled . 53*4959ec55SRobert MustacchiFor another thread or process to obtain the lock, something else must 54*4959ec55SRobert Mustacchiunlock it. 55*4959ec55SRobert Mustacchi.It Sy PTHREAD_MUTEX_ROBUST 56*4959ec55SRobert MustacchiThe mutex referred to by 57*4959ec55SRobert Mustacchi.Va attr 58*4959ec55SRobert Mustacchiis considered a robust mutex. When a process holding an inter-process 59*4959ec55SRobert Mustacchilock crashes or terminates without unlocking the mutex, the attempt to 60*4959ec55SRobert Mustacchilock it will return 61*4959ec55SRobert Mustacchi.Er EOWNERDEAD . 62*4959ec55SRobert MustacchiThis allows the new owner the chance to fix the internal state and call 63*4959ec55SRobert Mustacchi.Xr pthread_mutex_consistent 3C 64*4959ec55SRobert Mustacchiprior to unlocking the lock, allowing normal operation to proceed. Any 65*4959ec55SRobert Mustacchicrashes while in this state cause the next owner to obtain 66*4959ec55SRobert Mustacchi.Er EOWNERDEAD . 67*4959ec55SRobert Mustacchi.El 68*4959ec55SRobert Mustacchi.Sh RETURN VALUES 69*4959ec55SRobert MustacchiUpon successful completion, the 70*4959ec55SRobert Mustacchi.Fn pthread_mutexattr_getrobust 71*4959ec55SRobert Mustacchifunction will return 72*4959ec55SRobert Mustacchi.Sy 0 73*4959ec55SRobert Mustacchiand update 74*4959ec55SRobert Mustacchi.Fa robust 75*4959ec55SRobert Mustacchiwith the current value of the robust attribute. Upon successful 76*4959ec55SRobert Mustacchicompletion, the 77*4959ec55SRobert Mustacchi.Fn pthread_mutexattr_setrobust 78*4959ec55SRobert Mustacchifunction will return 79*4959ec55SRobert Mustacchi.Sy 0 80*4959ec55SRobert Mustacchiand update the robust property of the attributes pointed to by 81*4959ec55SRobert Mustacchi.Va attr 82*4959ec55SRobert Mustacchito 83*4959ec55SRobert Mustacchi.Va robust . 84*4959ec55SRobert MustacchiIf either function fails, an error code will be returned to indicate the 85*4959ec55SRobert Mustacchierror. Valid errors are defined below. 86*4959ec55SRobert Mustacchi.Sh ERRORS 87*4959ec55SRobert MustacchiThe 88*4959ec55SRobert Mustacchi.Fn pthread_mutexattr_getrobust 89*4959ec55SRobert Mustacchifunction will fail if: 90*4959ec55SRobert Mustacchi.Bl -tag -width Er 91*4959ec55SRobert Mustacchi.It Er EINVAL 92*4959ec55SRobert Mustacchi.Va attr 93*4959ec55SRobert Mustacchiis invalid or a null pointer, 94*4959ec55SRobert Mustacchi.Va robust 95*4959ec55SRobert Mustacchiis a null pointer. 96*4959ec55SRobert Mustacchi.El 97*4959ec55SRobert Mustacchi.Lp 98*4959ec55SRobert MustacchiThe 99*4959ec55SRobert Mustacchi.Fn pthread_mutexattr_setrobust 100*4959ec55SRobert Mustacchifunction will fail if: 101*4959ec55SRobert Mustacchi.Bl -tag -width Er 102*4959ec55SRobert Mustacchi.It Er EINVAL 103*4959ec55SRobert Mustacchi.Va attr 104*4959ec55SRobert Mustacchiis invalid or a null pointer, 105*4959ec55SRobert Mustacchi.Va robust 106*4959ec55SRobert Mustacchiis not one of 107*4959ec55SRobert Mustacchi.Sy PTHREAD_MUTEX_STALLED 108*4959ec55SRobert Mustacchior 109*4959ec55SRobert Mustacchi.Sy PTHREAD_MUTEX_ROBUST . 110*4959ec55SRobert Mustacchi.El 111*4959ec55SRobert Mustacchi.Sh INTERFACE STABILITY 112*4959ec55SRobert Mustacchi.Sy Committed 113*4959ec55SRobert Mustacchi.Sh MT-LEVEL 114*4959ec55SRobert Mustacchi.Sy MT-Safe 115*4959ec55SRobert Mustacchi.Sh SEE ALSO 116*4959ec55SRobert Mustacchi.Xr pthread_mutex_consistent 3C , 117*4959ec55SRobert Mustacchi.Xr pthread 3HEAD , 118*4959ec55SRobert Mustacchi.Xr libpthread 3LIB , 119*4959ec55SRobert Mustacchi.Xr attributes 5 , 120*4959ec55SRobert Mustacchi.Xr mutex 5 121