p The .Fn pthread_mutexattr_init function initializes .Fa attr with all the default mutex attributes.
p The .Fn pthread_mutexattr_destroy function destroys .Fa attr .
p The .Fn pthread_mutexattr_settype functions set the mutex .Fa type value of the attribute. Valid mutex types are: l -tag -width "XXX" -offset 2n t Dv PTHREAD_MUTEX_NORMAL This type of mutex does not check for usage errors. It will deadlock if reentered, and result in undefined behavior if a locked mutex is unlocked by another thread. Attempts to unlock an already unlocked .Dv PTHREAD_MUTEX_NORMAL mutex will result in undefined behavior. t Dv PTHREAD_MUTEX_ERRORCHECK These mutexes do check for usage errors. If an attempt is made to relock a .Dv PTHREAD_MUTEX_ERRORCHECK mutex without first dropping the lock, an error will be returned. If a thread attempts to unlock a .Dv PTHREAD_MUTEX_ERRORCHECK mutex that is locked by another thread, an error will be returned. If a thread attempts to unlock a .Dv PTHREAD_MUTEX_ERRORCHECK thread that is unlocked, an error will be returned. t Dv PTHREAD_MUTEX_RECURSIVE These mutexes allow recursive locking. An attempt to relock a .Dv PTHREAD_MUTEX_RECURSIVE mutex that is already locked by the same thread succeeds. An equivalent number of .Xr pthread_mutex_unlock 3 calls are needed before the mutex will wake another thread waiting on this lock. If a thread attempts to unlock a .Dv PTHREAD_MUTEX_RECURSIVE mutex that is locked by another thread, an error will be returned. If a thread attempts to unlock a .Dv PTHREAD_MUTEX_RECURSIVE thread that is unlocked, an error will be returned.
p It is advised that .Dv PTHREAD_MUTEX_RECURSIVE mutexes are not used with condition variables. This is because of the implicit unlocking done by .Xr pthread_cond_wait 3 and .Xr pthread_cond_timedwait 3 . t Dv PTHREAD_MUTEX_DEFAULT Also this type of mutex will cause undefined behavior if reentered. Unlocking a .Dv PTHREAD_MUTEX_DEFAULT mutex locked by another thread will result in undefined behavior. Attempts to unlock an already unlocked .Dv PTHREAD_MUTEX_DEFAULT mutex will result in undefined behavior.
p This is the default mutex type for .Fn pthread_mutexattr_init . .El
p The .Fn pthread_mutexattr_gettype functions copy the type value of the attribute to the location pointed to by the second parameter.
p The .Fn pthread_mutexattr_getpshared function obtains the value of the process-shared attribute from the attributes object referenced by .Fa attr .
p The .Fn pthread_mutexattr_setpshared function is used to set the process-shared attribute in an initialised attributes object referenced by .Fa attr .
p The .Fn pthread_mutexattr_getprotocol and .Fn pthread_mutexattr_setprotocol functions shall get and set the protocol attribute of a mutex attributes object pointed to by .Fa attr which was previously created by the function .Fn pthread_mutexattr_init .
p The .Fn pthread_mutexattr_getprioceiling and .Fn pthread_mutexattr_setprioceiling functions, shall get and set the priority ceiling attribute of a mutex attributes object pointed to by .Fa attr which was previously created by the function .Fn pthread_mutexattr_init . .Sh RETURN VALUES If successful, these functions return 0. Otherwise, an error number is returned to indicate the error. .Sh ERRORS The .Fn pthread_mutexattr_init function shall fail if: l -tag -width Er t Bq Er ENOMEM Insufficient memory exists to initialize the mutex attributes object. .El
p The .Fn pthread_mutexattr_settype function shall fail if: l -tag -width Er t Bq Er EINVAL The value specified either by .Fa type or .Fa attr is invalid. .El
p No error numbers are defined for the .Fn pthread_mutexattr_destroy and .Fn pthread_mutexattr_gettype functions.
p .Fn pthread_mutexattr_setprioceiling may fail if: l -tag -width Er t Bq Er EINVAL Invalid value for .Fa attr , or invalid value for .Fa prioceiling . .El
p .Fn pthread_mutexattr_getprioceiling may fail if: l -tag -width Er t Bq Er EINVAL Invalid value for .Fa attr . .El
p .Fn pthread_mutexattr_setprotocol may fail if: l -tag -width Er t Bq Er EINVAL Invalid value for .Fa attr , or invalid value for .Fa protocol . .El
p .Fn pthread_mutexattr_getprotocol may fail if: l -tag -width Er t Bq Er EINVAL Invalid value for .Fa attr . .El
p .Fn pthread_mutexattr_getpshared and .Fn pthread_mutexattr_setpshared may fail if: l -tag -width Er t Bq Er EINVAL the value specified by .Fa attr is invalid. .El .Sh SEE ALSO .Xr pthread_mutex_init 3 .Sh STANDARDS These functions conform to .St -p1003.1-2001 . .Sh BUGS The .Fn pthread_mutexattr_getpshared and .Fn pthread_mutexattr_setpshared functions are hidden by default since only thread shared attributes are supported.