| PTHREAD_MUTEXATTR(3) | Library Functions Manual | PTHREAD_MUTEXATTR(3) |
pthread_mutexattr_init,
pthread_mutexattr_destroy,
pthread_mutexattr_setprioceiling,
pthread_mutexattr_getprioceiling,
pthread_mutexattr_setprotocol,
pthread_mutexattr_getprotocol,
pthread_mutexattr_settype,
pthread_mutexattr_gettype,
pthread_mutexattr_getpshared,
pthread_mutexattr_setpshared —
#include <pthread.h>
int
pthread_mutexattr_init(pthread_mutexattr_t
*attr);
int
pthread_mutexattr_destroy(pthread_mutexattr_t
*attr);
int
pthread_mutexattr_setprioceiling(pthread_mutexattr_t
*attr, int
prioceiling);
int
pthread_mutexattr_getprioceiling(pthread_mutexattr_t
*attr, int
*prioceiling);
int
pthread_mutexattr_setprotocol(pthread_mutexattr_t
*attr, int
protocol);
int
pthread_mutexattr_getprotocol(pthread_mutexattr_t
*attr, int
*protocol);
int
pthread_mutexattr_settype(pthread_mutexattr_t
*attr, int
type);
int
pthread_mutexattr_gettype(pthread_mutexattr_t
* restrict attr, int *
restrict type);
int
pthread_mutexattr_getpshared(const
pthread_mutexattr_t * __restrict attr,
int * __restrict
pshared);
int
pthread_mutexattr_setpshared(pthread_mutexattr_t
* attr, int
pshared);
pthread_mutex_init(). Like with thread attributes, one
attribute object can be used in multiple calls to
pthread_mutex_init(3),
with or without modifications between calls.
The pthread_mutexattr_init() function
initializes attr with all the default mutex
attributes.
The pthread_mutexattr_destroy() function
destroys attr.
The pthread_mutexattr_settype() functions
set the mutex type value of the attribute. Valid mutex
types are:
PTHREAD_MUTEX_NORMALPTHREAD_MUTEX_NORMAL mutex will result in
undefined behavior.PTHREAD_MUTEX_ERRORCHECKPTHREAD_MUTEX_ERRORCHECK mutex without first
dropping the lock, an error will be returned. If a thread attempts to
unlock a PTHREAD_MUTEX_ERRORCHECK mutex that is
locked by another thread, an error will be returned. If a thread attempts
to unlock a PTHREAD_MUTEX_ERRORCHECK thread that
is unlocked, an error will be returned.PTHREAD_MUTEX_RECURSIVEPTHREAD_MUTEX_RECURSIVE mutex that is already
locked by the same thread succeeds. An equivalent number of
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
PTHREAD_MUTEX_RECURSIVE mutex that is locked by
another thread, an error will be returned. If a thread attempts to unlock
a PTHREAD_MUTEX_RECURSIVE thread that is unlocked,
an error will be returned.
It is advised that
PTHREAD_MUTEX_RECURSIVE mutexes are not used
with condition variables. This is because of the implicit unlocking done
by
pthread_cond_wait(3)
and
pthread_cond_timedwait(3).
PTHREAD_MUTEX_DEFAULTPTHREAD_MUTEX_DEFAULT mutex locked by
another thread will result in undefined behavior. Attempts to unlock an
already unlocked PTHREAD_MUTEX_DEFAULT mutex will
result in undefined behavior.
This is the default mutex type for
pthread_mutexattr_init().
The pthread_mutexattr_gettype() functions
copy the type value of the attribute to the location pointed to by the
second parameter.
The pthread_mutexattr_getpshared()
function obtains the value of the process-shared attribute from the
attributes object referenced by attr.
The pthread_mutexattr_setpshared()
function is used to set the process-shared attribute in an initialised
attributes object referenced by attr.
The pthread_mutexattr_getprotocol() and
pthread_mutexattr_setprotocol() functions shall get
and set the protocol attribute of a mutex attributes object pointed to by
attr which was previously created by the function
pthread_mutexattr_init().
The pthread_mutexattr_getprioceiling() and
pthread_mutexattr_setprioceiling() functions, shall
get and set the priority ceiling attribute of a mutex attributes object
pointed to by attr which was previously created by the
function pthread_mutexattr_init().
pthread_mutexattr_init() function shall fail if:
ENOMEM]The pthread_mutexattr_settype() function
shall fail if:
EINVAL]No error numbers are defined for the
pthread_mutexattr_destroy() and
pthread_mutexattr_gettype() functions.
pthread_mutexattr_setprioceiling() may
fail if:
EINVAL]pthread_mutexattr_getprioceiling() may
fail if:
EINVAL]pthread_mutexattr_setprotocol() may fail
if:
EINVAL]pthread_mutexattr_getprotocol() may fail
if:
EINVAL]pthread_mutexattr_getpshared() and
pthread_mutexattr_setpshared() may fail if:
EINVAL]pthread_mutexattr_getpshared() and
pthread_mutexattr_setpshared() functions are hidden by
default since only thread shared attributes are supported.
| June 12, 2016 | NetBSD 9.1 |