PTHREAD_MUTEXATTR_GETROBUST(3C)                 Standard C Library Functions
NAME
     pthread_mutexattr_getrobust, 
pthread_mutexattr_setrobust - get and set
     the mutex robust attribute
SYNOPSIS
     #include <pthread.h>     int     pthread_mutexattr_getrobust(
const pthread_mutexattr_t *attr,         
int *robust);     
int     pthread_mutexattr_setrobust(
pthread_mutexattr_t *attr, 
int robust);
DESCRIPTION
     The 
pthread_mutexattr_getrobust() and 
pthread_mutexattr_setrobust()
     functions obtain and set a mutex's 
robust attribute, putting it in, or
     obtaining it from 
robust.  The valid values for 
robust include:     
PTHREAD_MUTEX_STALLED                   The mutex referred to by 
attr is a traditional mutex.
                   When a thread holding an intra-process lock or a process
                   holding an inter-process lock crashes or terminates
                   without unlocking the mutex, then the lock will be                   
stalled.  For another thread or process to obtain the
                   lock, something else must unlock it.     
PTHREAD_MUTEX_ROBUST                   The mutex referred to by 
attr is considered a robust
                   mutex.  When a process holding an inter-process lock
                   crashes or terminates without unlocking the mutex, the
                   attempt to lock it will return EOWNERDEAD.  This allows
                   the new owner the chance to fix the internal state and
                   call 
pthread_mutex_consistent(3C) prior to unlocking the
                   lock, allowing normal operation to proceed.  Any crashes
                   while in this state cause the next owner to obtain
                   EOWNERDEAD.
RETURN VALUES
     Upon successful completion, the 
pthread_mutexattr_getrobust() function
     will return 
0 and update 
robust with the current value of the robust
     attribute.  Upon successful completion, the     
pthread_mutexattr_setrobust() function will return 
0 and update the
     robust property of the attributes pointed to by 
attr to 
robust.  If
     either function fails, an error code will be returned to indicate the
     error.  Valid errors are defined below.
ERRORS
     The 
pthread_mutexattr_getrobust() function will fail if:
     EINVAL             
attr is invalid or a null pointer, 
robust is a null
                        pointer.
     The 
pthread_mutexattr_setrobust() function will fail if:
     EINVAL             
attr is invalid or a null pointer, 
robust is not one
                        of 
PTHREAD_MUTEX_STALLED or 
PTHREAD_MUTEX_ROBUST.
INTERFACE STABILITY
     CommittedMT-LEVEL     MT-SafeSEE ALSO
     pthread_mutex_consistent(3C), 
pthread(3HEAD), 
libpthread(3LIB),     
attributes(7), 
mutex(7)illumos                       November 8, 2020                       illumos