## NAME

pthread_mutexattr_init, pthread_mutexattr_settype, pthread_mutexattr_gettype, pthread_mutexattr_destroy - mutex attributes control

## SYNOPSIS

#include <pthread.h>

int pthread_mutexattr_init(pthread_mutexattr_t *attr);
int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type);
int pthread_mutexattr_gettype(const pthread_mutexattr_t *attr, int *type);
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);

## DESCRIPTION

The pthread_mutexattr_init() function initializes a mutex attributes object attr with the default values.

The pthread_mutexattr_destroy() function destroys a mutex attributes object attr.

The pthread_mutexattr_gettype() and pthread_mutexattr_settype() functions, respectively, get and set the mutex type attribute. This attribute is set in the type parameter to these functions. The default value of the type attribute is PTHREAD_MUTEX_DEFAULT.

The type of mutex is contained in the type attribute of the mutex attributes. Valid mutex types include:

PTHREAD_MUTEX_NORMAL
  A normal type mutex does not detect deadlock. Attempting to relock the mutex causes deadlock. The mutex is either in a locked or unlocked state for a thread.
PTHREAD_MUTEX_ERRORCHECK
  An errorcheck type mutex provides error checking. If a thread attempts to relock a mutex that it has already locked, an error will be returned. If a thread attempts to unlock a mutex and the thread in not the owner of the mutex, an error will be returned.
PTHREAD_MUTEX_RECURSIVE
  A recursive type mutex permits a thread to lock many times. When a thread successfully acquires a mutex for the first time, the lock count will be set to one. Every time a thread relocks this mutex, the lock count will be incremented by one. Each time the thread unlocks the mutex, the lock count will be decremented by one. When the lock count reaches zero, the mutex will become available for other threads to acquire. If a thread attempts to unlock a mutex and the thread in not the owner of the mutex, an error will be returned.
PTHREAD_MUTEX_DEFAULT
  The default type mutex is mapped to a normal type mutex.

## RETURN VALUES

If successful, all of these functions return 0 ; otherwise, an error number is returned.

## ERRORS

pthread_mutexattr_init() fails and returns the corresponding value if any of the following conditions occur:

ENOMEM
  Insufficient memory exists to initialize the mutex attributes object.

pthread_mutexattr_gettype(), pthread_mutexattr_settype() and pthread_mutexattr_destroy() fail and return the corresponding value if any of the following conditions occur:

EINVAL
  The attr is invalid pointer or type has wrong parameter.

## SEE ALSO

mutex

#### Home page (Kernel)

## < Copyright Rowebots Research Inc. and Multiprocessor Toolsmiths Inc. 1987-2018 >