| OLD | NEW |
| 1 #include <semaphore.h> | 1 #include <semaphore.h> |
| 2 #include "pthread_impl.h" | 2 #include "pthread_impl.h" |
| 3 | 3 |
| 4 int sem_trywait(sem_t *sem) | 4 int sem_trywait(sem_t* sem) { |
| 5 { | 5 int val; |
| 6 » int val; | 6 while ((val = sem->__val[0]) > 0) { |
| 7 » while ((val=sem->__val[0]) > 0) { | 7 int new = val - 1 - (val == 1 && sem->__val[1]); |
| 8 » » int new = val-1-(val==1 && sem->__val[1]); | 8 if (a_cas(sem->__val, val, new) == val) |
| 9 » » if (a_cas(sem->__val, val, new)==val) return 0; | 9 return 0; |
| 10 » } | 10 } |
| 11 » errno = EAGAIN; | 11 errno = EAGAIN; |
| 12 » return -1; | 12 return -1; |
| 13 } | 13 } |
| OLD | NEW |