1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h" 2*c9945492SAndroid Build Coastguard Worker #include "syscall.h" 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker static volatile int check_robust_result = -1; 5*c9945492SAndroid Build Coastguard Worker pthread_mutexattr_setrobust(pthread_mutexattr_t * a,int robust)6*c9945492SAndroid Build Coastguard Workerint pthread_mutexattr_setrobust(pthread_mutexattr_t *a, int robust) 7*c9945492SAndroid Build Coastguard Worker { 8*c9945492SAndroid Build Coastguard Worker if (robust > 1U) return EINVAL; 9*c9945492SAndroid Build Coastguard Worker if (robust) { 10*c9945492SAndroid Build Coastguard Worker int r = check_robust_result; 11*c9945492SAndroid Build Coastguard Worker if (r < 0) { 12*c9945492SAndroid Build Coastguard Worker void *p; 13*c9945492SAndroid Build Coastguard Worker size_t l; 14*c9945492SAndroid Build Coastguard Worker r = -__syscall(SYS_get_robust_list, 0, &p, &l); 15*c9945492SAndroid Build Coastguard Worker a_store(&check_robust_result, r); 16*c9945492SAndroid Build Coastguard Worker } 17*c9945492SAndroid Build Coastguard Worker if (r) return r; 18*c9945492SAndroid Build Coastguard Worker a->__attr |= 4; 19*c9945492SAndroid Build Coastguard Worker return 0; 20*c9945492SAndroid Build Coastguard Worker } 21*c9945492SAndroid Build Coastguard Worker a->__attr &= ~4; 22*c9945492SAndroid Build Coastguard Worker return 0; 23*c9945492SAndroid Build Coastguard Worker } 24