xref: /titanic_51/usr/src/man/man3c/pthread_mutexattr_getrobust.3c (revision ad0ef8fd06d1ac28108685495a9ba1244a20a5ca)
1*ad0ef8fdSRobert Mustacchi.\"
2*ad0ef8fdSRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3*ad0ef8fdSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4*ad0ef8fdSRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5*ad0ef8fdSRobert Mustacchi.\" 1.0 of the CDDL.
6*ad0ef8fdSRobert Mustacchi.\"
7*ad0ef8fdSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8*ad0ef8fdSRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9*ad0ef8fdSRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10*ad0ef8fdSRobert Mustacchi.\"
11*ad0ef8fdSRobert Mustacchi.\"
12*ad0ef8fdSRobert Mustacchi.\" Copyright (c) 2014, Joyent, Inc.
13*ad0ef8fdSRobert Mustacchi.\"
14*ad0ef8fdSRobert Mustacchi.Dd "Dec 22, 2014"
15*ad0ef8fdSRobert Mustacchi.Dt PTHREAD_MUTEXATTR_GETROBUST 3C
16*ad0ef8fdSRobert Mustacchi.Os
17*ad0ef8fdSRobert Mustacchi.Sh NAME
18*ad0ef8fdSRobert Mustacchi.Nm pthread_mutexattr_getrobust ,
19*ad0ef8fdSRobert Mustacchi.Nm pthrad_mutexattr_setrobust
20*ad0ef8fdSRobert Mustacchi.Nd get and set the mutex robust attribute
21*ad0ef8fdSRobert Mustacchi.Sh SYNOPSIS
22*ad0ef8fdSRobert Mustacchi.In pthread.h
23*ad0ef8fdSRobert Mustacchi.Ft int
24*ad0ef8fdSRobert Mustacchi.Fo pthread_mutexattr_getrobust
25*ad0ef8fdSRobert Mustacchi.Fa "const pthread_mutexattr_t *attr"
26*ad0ef8fdSRobert Mustacchi.Fa "int *robust"
27*ad0ef8fdSRobert Mustacchi.Fc
28*ad0ef8fdSRobert Mustacchi.Ft int
29*ad0ef8fdSRobert Mustacchi.Fo pthread_mutexattr_setrobust
30*ad0ef8fdSRobert Mustacchi.Fa "pthread_mutexattr_t *attr"
31*ad0ef8fdSRobert Mustacchi.Fa "int robust"
32*ad0ef8fdSRobert Mustacchi.Fc
33*ad0ef8fdSRobert Mustacchi.Sh DESCRIPTION
34*ad0ef8fdSRobert MustacchiThe
35*ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
36*ad0ef8fdSRobert Mustacchiand
37*ad0ef8fdSRobert Mustacchi.Fn pthread_mtuexattr_setrobust
38*ad0ef8fdSRobert Mustacchifunctions obtain and set a mutex's
39*ad0ef8fdSRobert Mustacchi.Em robust
40*ad0ef8fdSRobert Mustacchiattribute, putting it in, or obtaining it from
41*ad0ef8fdSRobert Mustacchi.Va robust .
42*ad0ef8fdSRobert MustacchiThe valid values for
43*ad0ef8fdSRobert Mustacchi.Va robust
44*ad0ef8fdSRobert Mustacchiinclude:
45*ad0ef8fdSRobert Mustacchi.Bl -tag -width Dv
46*ad0ef8fdSRobert Mustacchi.It Sy PTHREAD_MUTEX_STALLED
47*ad0ef8fdSRobert MustacchiThe mutex referred to by
48*ad0ef8fdSRobert Mustacchi.Va attr
49*ad0ef8fdSRobert Mustacchiis a traditional mutex. When a thread holding an intra-process lock or a
50*ad0ef8fdSRobert Mustacchiprocess holding an inter-process lock crashes or terminates without
51*ad0ef8fdSRobert Mustacchiunlocking the mutex, then the lock will be
52*ad0ef8fdSRobert Mustacchi.Sy stalled .
53*ad0ef8fdSRobert MustacchiFor another thread or process to obtain the lock, something else must
54*ad0ef8fdSRobert Mustacchiunlock it.
55*ad0ef8fdSRobert Mustacchi.It Sy PTHREAD_MUTEX_ROBUST
56*ad0ef8fdSRobert MustacchiThe mutex referred to by
57*ad0ef8fdSRobert Mustacchi.Va attr
58*ad0ef8fdSRobert Mustacchiis considered a robust mutex. When a process holding an inter-process
59*ad0ef8fdSRobert Mustacchilock crashes or terminates without unlocking the mutex, the attempt to
60*ad0ef8fdSRobert Mustacchilock it will return
61*ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD .
62*ad0ef8fdSRobert MustacchiThis allows the new owner the chance to fix the internal state and call
63*ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_consistent 3C
64*ad0ef8fdSRobert Mustacchiprior to unlocking the lock, allowing normal operation to proceed. Any
65*ad0ef8fdSRobert Mustacchicrashes while in this state cause the next owner to obtain
66*ad0ef8fdSRobert Mustacchi.Er EOWNERDEAD .
67*ad0ef8fdSRobert Mustacchi.El
68*ad0ef8fdSRobert Mustacchi.Sh RETURN VALUES
69*ad0ef8fdSRobert MustacchiUpon successful completion, the
70*ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
71*ad0ef8fdSRobert Mustacchifunction will return
72*ad0ef8fdSRobert Mustacchi.Sy 0
73*ad0ef8fdSRobert Mustacchiand update
74*ad0ef8fdSRobert Mustacchi.Fa robust
75*ad0ef8fdSRobert Mustacchiwith the current value of the robust attribute. Upon successful
76*ad0ef8fdSRobert Mustacchicompletion, the
77*ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_setrobust
78*ad0ef8fdSRobert Mustacchifunction will return
79*ad0ef8fdSRobert Mustacchi.Sy 0
80*ad0ef8fdSRobert Mustacchiand update the robust property of the attributes pointed to by
81*ad0ef8fdSRobert Mustacchi.Va attr
82*ad0ef8fdSRobert Mustacchito
83*ad0ef8fdSRobert Mustacchi.Va robust .
84*ad0ef8fdSRobert MustacchiIf either function fails, an error code will be returned to indicate the
85*ad0ef8fdSRobert Mustacchierror. Valid errors are defined below.
86*ad0ef8fdSRobert Mustacchi.Sh ERRORS
87*ad0ef8fdSRobert MustacchiThe
88*ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_getrobust
89*ad0ef8fdSRobert Mustacchifunction will fail if:
90*ad0ef8fdSRobert Mustacchi.Bl -tag -width Er
91*ad0ef8fdSRobert Mustacchi.It Er EINVAL
92*ad0ef8fdSRobert Mustacchi.Va attr
93*ad0ef8fdSRobert Mustacchiis invalid or a null pointer,
94*ad0ef8fdSRobert Mustacchi.Va robust
95*ad0ef8fdSRobert Mustacchiis a null pointer.
96*ad0ef8fdSRobert Mustacchi.El
97*ad0ef8fdSRobert Mustacchi.Lp
98*ad0ef8fdSRobert MustacchiThe
99*ad0ef8fdSRobert Mustacchi.Fn pthread_mutexattr_setrobust
100*ad0ef8fdSRobert Mustacchifunction will fail if:
101*ad0ef8fdSRobert Mustacchi.Bl -tag -width Er
102*ad0ef8fdSRobert Mustacchi.It Er EINVAL
103*ad0ef8fdSRobert Mustacchi.Va attr
104*ad0ef8fdSRobert Mustacchiis invalid or a null pointer,
105*ad0ef8fdSRobert Mustacchi.Va robust
106*ad0ef8fdSRobert Mustacchiis not one of
107*ad0ef8fdSRobert Mustacchi.Sy PTHREAD_MUTEX_STALLED
108*ad0ef8fdSRobert Mustacchior
109*ad0ef8fdSRobert Mustacchi.Sy PTHREAD_MUTEX_ROBUST .
110*ad0ef8fdSRobert Mustacchi.El
111*ad0ef8fdSRobert Mustacchi.Sh INTERFACE STABILITY
112*ad0ef8fdSRobert Mustacchi.Sy Committed
113*ad0ef8fdSRobert Mustacchi.Sh MT-LEVEL
114*ad0ef8fdSRobert Mustacchi.Sy MT-Safe
115*ad0ef8fdSRobert Mustacchi.Sh SEE ALSO
116*ad0ef8fdSRobert Mustacchi.Xr pthread_mutex_consistent 3C ,
117*ad0ef8fdSRobert Mustacchi.Xr pthread 3HEAD ,
118*ad0ef8fdSRobert Mustacchi.Xr libpthread 3LIB ,
119*ad0ef8fdSRobert Mustacchi.Xr attributes 5 ,
120*ad0ef8fdSRobert Mustacchi.Xr mutex 5
121