man pages section 3: Basic Library Functions

Exit Print View

Updated: July 2014
 
 

pthread_mutex_consistent(3C)

Name

pthread_mutex_consistent - mark state protected by robust mutex as consistent

Synopsis

cc –mt [ flag... ] file... [ library... ]
#include <pthread.h> 

int pthread_mutex_consistent(pthread_mutex_t *mutex);

Description

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.

Return Values

Upon successful completion, the pthread_mutexattr_consistent() function returns 0. Otherwise, an error value is returned to indicate the error.

Errors

The pthread_mutex_consistent() function will fail if:

EINVAL

The current thread does not own the mutex or the mutex is not a PTHREAD_MUTEX_ROBUST mutex having an inconsistent state (EOWNERDEAD).

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
Standard
MT-Level
MT-Safe

See also

exec(2), pthread_mutex_lock(3C), pthread_mutex_unlock(3C), pthread_mutexattr_getrobust(3C), attributes(5), mutex(5), standards(5)