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_MUTEX_CONSISTENT 3C 16*4959ec55SRobert Mustacchi.Os 17*4959ec55SRobert Mustacchi.Sh NAME 18*4959ec55SRobert Mustacchi.Nm pthread_mutex_consistent 19*4959ec55SRobert Mustacchi.Nd mark state protected by robust mutex as consistent 20*4959ec55SRobert Mustacchi.Sh SYNOPSIS 21*4959ec55SRobert Mustacchi.In pthread.h 22*4959ec55SRobert Mustacchi.Ft int 23*4959ec55SRobert Mustacchi.Fo pthread_mutex_consistent 24*4959ec55SRobert Mustacchi.Fa "pthread_mutex_t *mutex" 25*4959ec55SRobert Mustacchi.Fc 26*4959ec55SRobert Mustacchi.Sh DESCRIPTION 27*4959ec55SRobert MustacchiThe 28*4959ec55SRobert Mustacchi.Fn pthread_mutex_consistent 29*4959ec55SRobert Mustacchifunction is used to indicate that a robust lock that is in an 30*4959ec55SRobert Mustacchiinconsistent state no longer is. 31*4959ec55SRobert Mustacchi.Lp 32*4959ec55SRobert MustacchiA robust lock enters into an inconsistent state when a process or thread 33*4959ec55SRobert Mustacchiholding a robust lock exits, such as by calling 34*4959ec55SRobert Mustacchi.Xr exit 2 35*4959ec55SRobert Mustacchior 36*4959ec55SRobert Mustacchi.Xr thr_exit 3C , 37*4959ec55SRobert Mustacchior crashes without unlocking the lock. At that point, if another process 38*4959ec55SRobert Mustacchior thread is currently in a call, or calls 39*4959ec55SRobert Mustacchi.Xr pthread_mutex_lock 3C , 40*4959ec55SRobert Mustacchiit will obtain the lock; however, the error code 41*4959ec55SRobert Mustacchi.Er EOWNERDEAD 42*4959ec55SRobert Mustacchiwill be returned. In such cases, that thread will own the lock and must 43*4959ec55SRobert Mustacchicheck and clean up any inconsistent state that is protected by the lock. 44*4959ec55SRobert MustacchiWhen finished, it must call 45*4959ec55SRobert Mustacchi.Fn pthread_mutex_consistent 46*4959ec55SRobert Mustacchito indicate that it is in a consistent state again. 47*4959ec55SRobert Mustacchi.Lp 48*4959ec55SRobert MustacchiIf a process or thread obtains a robust lock while it is in an 49*4959ec55SRobert Mustacchiinconsistent state and it crashes or terminates before marking the lock 50*4959ec55SRobert Mustacchias consistent, the next process or thread that obtains the lock will 51*4959ec55SRobert Mustacchireceive 52*4959ec55SRobert Mustacchi.Er EOWNERDEAD . 53*4959ec55SRobert Mustacchi.Sh RETURN VALUES 54*4959ec55SRobert MustacchiUpon successful completion, the 55*4959ec55SRobert Mustacchi.Fn pthread_mutex_consistent 56*4959ec55SRobert Mustacchireturns zero and marks 57*4959ec55SRobert Mustacchi.Va mutex 58*4959ec55SRobert Mustacchias consistent. Callers of 59*4959ec55SRobert Mustacchi.Fn pthread_mutex_lock 60*4959ec55SRobert Mustacchiwill not have 61*4959ec55SRobert Mustacchi.Er EOWNERDEAD 62*4959ec55SRobert Mustacchireturned until another process or thread exits without unlocking. Upon 63*4959ec55SRobert Mustacchifailure, an error will be returned which corresponds to one of the 64*4959ec55SRobert Mustacchierrors listed below. 65*4959ec55SRobert Mustacchi.Sh ERRORS 66*4959ec55SRobert MustacchiThe 67*4959ec55SRobert Mustacchi.Fn pthread_mutex_consistent 68*4959ec55SRobert Mustacchifunction will fail if: 69*4959ec55SRobert Mustacchi.Bl -tag -width Er 70*4959ec55SRobert Mustacchi.It Er EINVAL 71*4959ec55SRobert Mustacchi.Va mutex 72*4959ec55SRobert Mustacchiis an uninitialized mutex, not a robust mutex, or not in an inconsistent 73*4959ec55SRobert Mustacchistate. 74*4959ec55SRobert Mustacchi.El 75*4959ec55SRobert Mustacchi.Sh INTERFACE STABILITY 76*4959ec55SRobert Mustacchi.Sy Committed 77*4959ec55SRobert Mustacchi.Sh MT-LEVEL 78*4959ec55SRobert Mustacchi.Sy MT-Safe 79*4959ec55SRobert Mustacchi.Sh SEE ALSO 80*4959ec55SRobert Mustacchi.Xr pthread_mutexattr_getrobust 3C , 81*4959ec55SRobert Mustacchi.Xr pthread_mutex_destroy 3C , 82*4959ec55SRobert Mustacchi.Xr pthread_mutex_lock 3C , 83*4959ec55SRobert Mustacchi.Xr pthread_mutex_init 3C , 84*4959ec55SRobert Mustacchi.Xr pthread 3HEAD , 85*4959ec55SRobert Mustacchi.Xr libpthread 3LIB , 86*4959ec55SRobert Mustacchi.Xr attributes 5 , 87*4959ec55SRobert Mustacchi.Xr mutex 5 88