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