Lines Matching refs:rw
151 rwlock_init(rwlock_t *rw) in rwlock_init() argument
154 mutex_init(&rw->rw_lock, MUTEX_DEFAULT, IPL_VM); in rwlock_init()
155 rw->rw_nreaders = 0; in rwlock_init()
159 rwlock_destroy(rwlock_t *rw) in rwlock_destroy() argument
162 KASSERTMSG(rw->rw_nreaders == 0, in rwlock_destroy()
163 "rwlock still held by %u readers", rw->rw_nreaders); in rwlock_destroy()
164 mutex_destroy(&rw->rw_lock); in rwlock_destroy()
168 write_lock_irq(rwlock_t *rw) in write_lock_irq() argument
172 mutex_spin_enter(&rw->rw_lock); in write_lock_irq()
173 if (rw->rw_nreaders == 0) in write_lock_irq()
175 mutex_spin_exit(&rw->rw_lock); in write_lock_irq()
180 write_unlock_irq(rwlock_t *rw) in write_unlock_irq() argument
183 KASSERT(rw->rw_nreaders == 0); in write_unlock_irq()
184 mutex_spin_exit(&rw->rw_lock); in write_unlock_irq()
188 read_lock(rwlock_t *rw) in read_lock() argument
191 mutex_spin_enter(&rw->rw_lock); in read_lock()
192 KASSERT(rw->rw_nreaders < UINT_MAX); in read_lock()
193 rw->rw_nreaders++; in read_lock()
194 mutex_spin_exit(&rw->rw_lock); in read_lock()
198 read_unlock(rwlock_t *rw) in read_unlock() argument
201 mutex_spin_enter(&rw->rw_lock); in read_unlock()
202 KASSERT(0 < rw->rw_nreaders); in read_unlock()
203 rw->rw_nreaders--; in read_unlock()
204 mutex_spin_exit(&rw->rw_lock); in read_unlock()