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 |