pthread_rwlock_wrlock.c 291 B

12345678910111213
  1. #include "pthread_impl.h"
  2. int pthread_rwlock_wrlock(pthread_rwlock_t *rw)
  3. {
  4. int nr;
  5. while (pthread_rwlock_trywrlock(rw)==EAGAIN) {
  6. if ((nr=rw->_rw_readers))
  7. __wait(&rw->_rw_readers, &rw->_rw_waiters, nr, 0);
  8. else
  9. __wait(&rw->_rw_wrlock, &rw->_rw_waiters, 1, 0);
  10. }
  11. return 0;
  12. }