1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h" 2*c9945492SAndroid Build Coastguard Worker __pthread_rwlock_tryrdlock(pthread_rwlock_t * rw)3*c9945492SAndroid Build Coastguard Workerint __pthread_rwlock_tryrdlock(pthread_rwlock_t *rw) 4*c9945492SAndroid Build Coastguard Worker { 5*c9945492SAndroid Build Coastguard Worker int val, cnt; 6*c9945492SAndroid Build Coastguard Worker do { 7*c9945492SAndroid Build Coastguard Worker val = rw->_rw_lock; 8*c9945492SAndroid Build Coastguard Worker cnt = val & 0x7fffffff; 9*c9945492SAndroid Build Coastguard Worker if (cnt == 0x7fffffff) return EBUSY; 10*c9945492SAndroid Build Coastguard Worker if (cnt == 0x7ffffffe) return EAGAIN; 11*c9945492SAndroid Build Coastguard Worker } while (a_cas(&rw->_rw_lock, val, val+1) != val); 12*c9945492SAndroid Build Coastguard Worker return 0; 13*c9945492SAndroid Build Coastguard Worker } 14*c9945492SAndroid Build Coastguard Worker 15*c9945492SAndroid Build Coastguard Worker weak_alias(__pthread_rwlock_tryrdlock, pthread_rwlock_tryrdlock); 16