Home | History | Annotate | Download | only in linux

Lines Matching refs:rw

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