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_MUTEXATTR_GETROBUST 3C
16ad0ef8fdSRobert Mustacchi.Os
17ad0ef8fdSRobert Mustacchi.Sh NAME
18ad0ef8fdSRobert Mustacchi.Nm pthread_mutexattr_getrobust ,
19ad0ef8fdSRobert Mustacchi.Nm pthrad_mutexattr_setrobust
20ad0ef8fdSRobert Mustacchi.Nd get and set the mutex robust attribute
21ad0ef8fdSRobert Mustacchi.Sh SYNOPSIS
22ad0ef8fdSRobert Mustacchi.In pthread.h
23ad0ef8fdSRobert Mustacchi.Ft int
24ad0ef8fdSRobert Mustacchi.Fo pthread_mutexattr_getrobust
25ad0ef8fdSRobert Mustacchi.Fa "const pthread_mutexattr_t *attr"
26ad0ef8fdSRobert Mustacchi.Fa "int *robust"
27ad0ef8fdSRobert Mustacchi.Fc
28ad0ef8fdSRobert Mustacchi.Ft int
29ad0ef8fdSRobert Mustacchi.Fo pthread_mutexattr_setrobust
30ad0ef8fdSRobert Mustacchi.Fa "pthread_mutexattr_t *attr"
31ad0ef8fdSRobert Mustacchi.Fa "int robust"
32ad0ef8fdSRobert Mustacchi.Fc
33ad0ef8fdSRobert Mustacchi.Sh DESCRIPTION
34ad0ef8fdSRobert MustacchiThe
35ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
36ad0ef8fdSRobert Mustacchiand
37ad0ef8fdSRobert Mustacchi.Fn pthread_mtuexattr_setrobust
38ad0ef8fdSRobert Mustacchifunctions obtain and set a mutex's
39ad0ef8fdSRobert Mustacchi.Em robust
40ad0ef8fdSRobert Mustacchiattribute, putting it in, or obtaining it from
41ad0ef8fdSRobert Mustacchi.Va robust .
42ad0ef8fdSRobert MustacchiThe valid values for
43ad0ef8fdSRobert Mustacchi.Va robust
44ad0ef8fdSRobert Mustacchiinclude:
45ad0ef8fdSRobert Mustacchi.Bl -tag -width Dv
46ad0ef8fdSRobert Mustacchi.It Sy PTHREAD_MUTEX_STALLED
47ad0ef8fdSRobert MustacchiThe mutex referred to by
48ad0ef8fdSRobert Mustacchi.Va attr
49ad0ef8fdSRobert Mustacchiis a traditional mutex. When a thread holding an intra-process lock or a
50ad0ef8fdSRobert Mustacchiprocess holding an inter-process lock crashes or terminates without
51ad0ef8fdSRobert Mustacchiunlocking the mutex, then the lock will be
52ad0ef8fdSRobert Mustacchi.Sy stalled .
53ad0ef8fdSRobert MustacchiFor another thread or process to obtain the lock, something else must
54ad0ef8fdSRobert Mustacchiunlock it.
55ad0ef8fdSRobert Mustacchi.It Sy PTHREAD_MUTEX_ROBUST
56ad0ef8fdSRobert MustacchiThe mutex referred to by
57ad0ef8fdSRobert Mustacchi.Va attr
58ad0ef8fdSRobert Mustacchiis considered a robust mutex. When a process holding an inter-process
59ad0ef8fdSRobert Mustacchilock crashes or terminates without unlocking the mutex, the attempt to
60ad0ef8fdSRobert Mustacchilock it will return
61ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD .
62ad0ef8fdSRobert MustacchiThis allows the new owner the chance to fix the internal state and call
63ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_consistent 3C
64ad0ef8fdSRobert Mustacchiprior to unlocking the lock, allowing normal operation to proceed. Any
65ad0ef8fdSRobert Mustacchicrashes while in this state cause the next owner to obtain
66ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD .
67ad0ef8fdSRobert Mustacchi.El
68ad0ef8fdSRobert Mustacchi.Sh RETURN VALUES
69ad0ef8fdSRobert MustacchiUpon successful completion, the
70ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
71ad0ef8fdSRobert Mustacchifunction will return
72ad0ef8fdSRobert Mustacchi.Sy 0
73ad0ef8fdSRobert Mustacchiand update
74ad0ef8fdSRobert Mustacchi.Fa robust
75ad0ef8fdSRobert Mustacchiwith the current value of the robust attribute. Upon successful
76ad0ef8fdSRobert Mustacchicompletion, the
77ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_setrobust
78ad0ef8fdSRobert Mustacchifunction will return
79ad0ef8fdSRobert Mustacchi.Sy 0
80ad0ef8fdSRobert Mustacchiand update the robust property of the attributes pointed to by
81ad0ef8fdSRobert Mustacchi.Va attr
82ad0ef8fdSRobert Mustacchito
83ad0ef8fdSRobert Mustacchi.Va robust .
84ad0ef8fdSRobert MustacchiIf either function fails, an error code will be returned to indicate the
85ad0ef8fdSRobert Mustacchierror. Valid errors are defined below.
86ad0ef8fdSRobert Mustacchi.Sh ERRORS
87ad0ef8fdSRobert MustacchiThe
88ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
89ad0ef8fdSRobert Mustacchifunction will fail if:
90ad0ef8fdSRobert Mustacchi.Bl -tag -width Er
91ad0ef8fdSRobert Mustacchi.It Er EINVAL
92ad0ef8fdSRobert Mustacchi.Va attr
93ad0ef8fdSRobert Mustacchiis invalid or a null pointer,
94ad0ef8fdSRobert Mustacchi.Va robust
95ad0ef8fdSRobert Mustacchiis a null pointer.
96ad0ef8fdSRobert Mustacchi.El
97ad0ef8fdSRobert Mustacchi.Lp
98ad0ef8fdSRobert MustacchiThe
99ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_setrobust
100ad0ef8fdSRobert Mustacchifunction will fail if:
101ad0ef8fdSRobert Mustacchi.Bl -tag -width Er
102ad0ef8fdSRobert Mustacchi.It Er EINVAL
103ad0ef8fdSRobert Mustacchi.Va attr
104ad0ef8fdSRobert Mustacchiis invalid or a null pointer,
105ad0ef8fdSRobert Mustacchi.Va robust
106ad0ef8fdSRobert Mustacchiis not one of
107ad0ef8fdSRobert Mustacchi.Sy PTHREAD_MUTEX_STALLED
108ad0ef8fdSRobert Mustacchior
109ad0ef8fdSRobert Mustacchi.Sy PTHREAD_MUTEX_ROBUST .
110ad0ef8fdSRobert Mustacchi.El
111ad0ef8fdSRobert Mustacchi.Sh INTERFACE STABILITY
112ad0ef8fdSRobert Mustacchi.Sy Committed
113ad0ef8fdSRobert Mustacchi.Sh MT-LEVEL
114ad0ef8fdSRobert Mustacchi.Sy MT-Safe
115ad0ef8fdSRobert Mustacchi.Sh SEE ALSO
116ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_consistent 3C ,
117ad0ef8fdSRobert Mustacchi.Xr pthread 3HEAD ,
118ad0ef8fdSRobert Mustacchi.Xr libpthread 3LIB ,
119ad0ef8fdSRobert Mustacchi.Xr attributes 5 ,
120ad0ef8fdSRobert Mustacchi.Xr mutex 5
121