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 , 3772d3dbb9SYuri Pankovor crashes without unlocking the lock. 3872d3dbb9SYuri PankovAt that point, if another process or 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 4272d3dbb9SYuri Pankovwill be returned. 4372d3dbb9SYuri PankovIn such cases, that thread will own the lock and must check and clean up any 4472d3dbb9SYuri Pankovinconsistent state that is protected by the lock. 45ad0ef8fdSRobert MustacchiWhen finished, it must call 46ad0ef8fdSRobert Mustacchi.Fn pthread_mutex_consistent 47ad0ef8fdSRobert Mustacchito indicate that it is in a consistent state again. 48ad0ef8fdSRobert Mustacchi.Lp 49ad0ef8fdSRobert MustacchiIf a process or thread obtains a robust lock while it is in an 50ad0ef8fdSRobert Mustacchiinconsistent state and it crashes or terminates before marking the lock 51ad0ef8fdSRobert Mustacchias consistent, the next process or thread that obtains the lock will 52ad0ef8fdSRobert Mustacchireceive 53ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD . 54ad0ef8fdSRobert Mustacchi.Sh RETURN VALUES 55ad0ef8fdSRobert MustacchiUpon successful completion, the 56ad0ef8fdSRobert Mustacchi.Fn pthread_mutex_consistent 57ad0ef8fdSRobert Mustacchireturns zero and marks 58ad0ef8fdSRobert Mustacchi.Va mutex 5972d3dbb9SYuri Pankovas consistent. 6072d3dbb9SYuri PankovCallers of 61ad0ef8fdSRobert Mustacchi.Fn pthread_mutex_lock 62ad0ef8fdSRobert Mustacchiwill not have 63ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD 6472d3dbb9SYuri Pankovreturned until another process or thread exits without unlocking. 6572d3dbb9SYuri PankovUpon failure, an error will be returned which corresponds to one of the errors 6672d3dbb9SYuri Pankovlisted below. 67ad0ef8fdSRobert Mustacchi.Sh ERRORS 68ad0ef8fdSRobert MustacchiThe 69ad0ef8fdSRobert Mustacchi.Fn pthread_mutex_consistent 70ad0ef8fdSRobert Mustacchifunction will fail if: 71ad0ef8fdSRobert Mustacchi.Bl -tag -width Er 72ad0ef8fdSRobert Mustacchi.It Er EINVAL 73ad0ef8fdSRobert Mustacchi.Va mutex 74ad0ef8fdSRobert Mustacchiis an uninitialized mutex, not a robust mutex, or not in an inconsistent 75ad0ef8fdSRobert Mustacchistate. 76ad0ef8fdSRobert Mustacchi.El 77ad0ef8fdSRobert Mustacchi.Sh INTERFACE STABILITY 78ad0ef8fdSRobert Mustacchi.Sy Committed 79ad0ef8fdSRobert Mustacchi.Sh MT-LEVEL 80ad0ef8fdSRobert Mustacchi.Sy MT-Safe 81ad0ef8fdSRobert Mustacchi.Sh SEE ALSO 82ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_destroy 3C , 83ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_init 3C , 843a005aadSYuri Pankov.Xr pthread_mutex_lock 3C , 853a005aadSYuri Pankov.Xr pthread_mutexattr_getrobust 3C , 86ad0ef8fdSRobert Mustacchi.Xr pthread 3HEAD , 87ad0ef8fdSRobert Mustacchi.Xr libpthread 3LIB , 88*bbf21555SRichard Lowe.Xr attributes 7 , 89*bbf21555SRichard Lowe.Xr mutex 7 90