xref: /titanic_41/usr/src/man/man3c/pthread_mutex_consistent.3c (revision 4959ec55bd58de06dde9e247debdcfb4ca42c782)
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