#include "pthread_impl.h" | |
#include "syscall.h" | |
static volatile int check_robust_result = -1; | |
int pthread_mutexattr_setrobust(pthread_mutexattr_t *a, int robust) | |
{ | |
if (robust > 1U) return EINVAL; | |
if (robust) { | |
int r = check_robust_result; | |
if (r < 0) { | |
void *p; | |
size_t l; | |
r = -__syscall(SYS_get_robust_list, 0, &p, &l); | |
a_store(&check_robust_result, r); | |
} | |
if (r) return r; | |
a->__attr |= 4; | |
return 0; | |
} | |
a->__attr &= ~4; | |
return 0; | |
} |