| OLD | NEW |
| 1 #include "pthread_impl.h" | 1 #include "pthread_impl.h" |
| 2 | 2 |
| 3 int pthread_rwlock_tryrdlock(pthread_rwlock_t *rw) | 3 int pthread_rwlock_tryrdlock(pthread_rwlock_t* rw) { |
| 4 { | 4 int val, cnt; |
| 5 » int val, cnt; | 5 do { |
| 6 » do { | 6 val = rw->_rw_lock; |
| 7 » » val = rw->_rw_lock; | 7 cnt = val & 0x7fffffff; |
| 8 » » cnt = val & 0x7fffffff; | 8 if (cnt == 0x7fffffff) |
| 9 » » if (cnt == 0x7fffffff) return EBUSY; | 9 return EBUSY; |
| 10 » » if (cnt == 0x7ffffffe) return EAGAIN; | 10 if (cnt == 0x7ffffffe) |
| 11 » } while (a_cas(&rw->_rw_lock, val, val+1) != val); | 11 return EAGAIN; |
| 12 » return 0; | 12 } while (a_cas(&rw->_rw_lock, val, val + 1) != val); |
| 13 return 0; |
| 13 } | 14 } |
| OLD | NEW |