blob: eac62a4ad4b2b92082183b0e0bef39a6b0caaf6e [file] [log] [blame]
#include "threads_impl.h"
int pthread_mutexattr_settype(pthread_mutexattr_t* a, int type) {
// RECURSIVE and ERRORCHECK are mutually exclusive. Only allow one of the
// two (or neither).
switch (type) {
case PTHREAD_MUTEX_NORMAL:
case PTHREAD_MUTEX_RECURSIVE:
case PTHREAD_MUTEX_ERRORCHECK:
break;
default:
return EINVAL;
}
a->__attr = (a->__attr & ~(PTHREAD_MUTEX_TYPE_MASK << PTHREAD_MUTEX_TYPE_SHIFT)) |
(type << PTHREAD_MUTEX_TYPE_SHIFT);
return 0;
}