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