unsigned ctl_rwlock_read_lock(CTL_RWLOCK_t *rwlock, CTL_TIMEOUT_t t, CTL_TIME_t timeout);
this attempts to acquire a read lock on the read-write lock rwlock. ctl_rwlock_read_lock will block waiting for exclusive access to rwlock to end and for an available read lock.
If a timeout is specified and a read lock cannot be acquired before the timeout, ctl_rwlock_read_lock returns zero. If a read lock can be acquired, ctl_rwlock_read_lock returns a non-zero result.
ctl_rwlock_read_lock must not be called from an interrupt service routine.