pthread_mutex_consistent - mark state protected by robust mutex as consistent
cc –mt [ flag... ] file... [ library... ] #include <pthread.h> int pthread_mutex_consistent(pthread_mutex_t *mutex);
The following applies only to mutexes that have been initialized with the PTHREAD_MUTEX_ROBUST attribute. See pthread_mutexattr_getrobust(3C).
If mutex is a robust mutex in an inconsistent state, the pthread_mutex_consistent() function can be used to mark the state protected by the mutex referenced by mutex as consistent again.
If the owner of a robust mutex terminates while holding the mutex, or if the process containing the owner of the mutex unmaps the memory containing the mutex or performs one of the exec(2) functions, the mutex becomes inconsistent and the next thread that acquires the mutex lock is notified of the state by the return value EOWNERDEAD. In this case, the mutex does not become normally usable again until the state is marked consistent.
The pthread_mutex_consistent() function is only responsible for notifying the system that the state protected by the mutex has been recovered and that normal operations with the mutex can be resumed. It is the responsibility of the application to recover the state so it can be reused. If the application is not able to perform the recovery, it can notify the system that the situation is unrecoverable by a call to pthread_mutex_unlock(3C) without a prior call to pthread_mutex_consistent(), in which case subsequent threads that attempt to lock the mutex will fail to acquire the lock and be returned ENOTRECOVERABLE.
If the thread which acquired the mutex lock with the return value EOWNERDEAD terminates before calling either pthread_mutex_consistent() or pthread_mutex_unlock(), the next thread that acquires the mutex lock is notified about the state of the mutex by the return value EOWNERDEAD.
Upon successful completion, the pthread_mutexattr_consistent() function returns 0. Otherwise, an error value is returned to indicate the error.
The pthread_mutex_consistent() function will fail if:
The current thread does not own the mutex or the mutex is not a PTHREAD_MUTEX_ROBUST mutex having an inconsistent state (EOWNERDEAD).
See attributes(5) for descriptions of the following attributes: