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