int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock_interface) { pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface); // Avoid slowing down fast path of rdlock. if (__predict_true(__pthread_rwlock_tryrdlock(rwlock) == 0)) { return 0; } return __pthread_rwlock_timedrdlock(rwlock, nullptr); }
int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock_interface, const timespec* abs_timeout) { pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface); return __pthread_rwlock_timedrdlock(rwlock, abs_timeout); }
int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock) { return __pthread_rwlock_timedrdlock(rwlock, NULL); }
int pthread_rwlock_timedrdlock(pthread_rwlock_t* rwlock, const timespec* abs_timeout) { return __pthread_rwlock_timedrdlock(rwlock, abs_timeout); }
int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock_interface) { pthread_rwlock_internal_t* rwlock = __get_internal_rwlock(rwlock_interface); return __pthread_rwlock_timedrdlock(rwlock, NULL); }