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