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