#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; | |
} |