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