Lines Matching refs:lock
72 rangelock_init(struct rangelock *lock) in rangelock_init() argument
75 TAILQ_INIT(&lock->rl_waiters); in rangelock_init()
76 lock->rl_currdep = NULL; in rangelock_init()
80 rangelock_destroy(struct rangelock *lock) in rangelock_destroy() argument
83 KASSERT(TAILQ_EMPTY(&lock->rl_waiters), ("Dangling waiters")); in rangelock_destroy()
104 rangelock_calc_block(struct rangelock *lock) in rangelock_calc_block() argument
108 for (entry = lock->rl_currdep; entry != NULL; entry = nextentry) { in rangelock_calc_block()
112 for (entry1 = TAILQ_FIRST(&lock->rl_waiters); in rangelock_calc_block()
120 for (entry1 = TAILQ_FIRST(&lock->rl_waiters); in rangelock_calc_block()
128 TAILQ_REMOVE(&lock->rl_waiters, entry, rl_q_link); in rangelock_calc_block()
129 TAILQ_INSERT_HEAD(&lock->rl_waiters, entry, rl_q_link); in rangelock_calc_block()
137 lock->rl_currdep = entry; in rangelock_calc_block()
141 rangelock_unlock_locked(struct rangelock *lock, struct rl_q_entry *entry, in rangelock_unlock_locked() argument
145 MPASS(lock != NULL && entry != NULL && ilk != NULL); in rangelock_unlock_locked()
147 KASSERT(entry != lock->rl_currdep, ("stuck currdep")); in rangelock_unlock_locked()
149 TAILQ_REMOVE(&lock->rl_waiters, entry, rl_q_link); in rangelock_unlock_locked()
150 rangelock_calc_block(lock); in rangelock_unlock_locked()
159 rangelock_unlock(struct rangelock *lock, void *cookie, struct mtx *ilk) in rangelock_unlock() argument
162 MPASS(lock != NULL && cookie != NULL && ilk != NULL); in rangelock_unlock()
165 rangelock_unlock_locked(lock, cookie, ilk); in rangelock_unlock()
172 rangelock_unlock_range(struct rangelock *lock, void *cookie, off_t start, in rangelock_unlock_range() argument
177 MPASS(lock != NULL && cookie != NULL && ilk != NULL); in rangelock_unlock_range()
186 rangelock_unlock_locked(lock, cookie, ilk); in rangelock_unlock_range()
190 rangelock_calc_block(lock); in rangelock_unlock_range()
200 rangelock_enqueue(struct rangelock *lock, off_t start, off_t end, int mode, in rangelock_enqueue() argument
206 MPASS(lock != NULL && ilk != NULL); in rangelock_enqueue()
226 TAILQ_INSERT_TAIL(&lock->rl_waiters, entry, rl_q_link); in rangelock_enqueue()
227 if (lock->rl_currdep == NULL) in rangelock_enqueue()
228 lock->rl_currdep = entry; in rangelock_enqueue()
229 rangelock_calc_block(lock); in rangelock_enqueue()
237 rangelock_rlock(struct rangelock *lock, off_t start, off_t end, struct mtx *ilk) in rangelock_rlock() argument
240 return (rangelock_enqueue(lock, start, end, RL_LOCK_READ, ilk)); in rangelock_rlock()
244 rangelock_wlock(struct rangelock *lock, off_t start, off_t end, struct mtx *ilk) in rangelock_wlock() argument
247 return (rangelock_enqueue(lock, start, end, RL_LOCK_WRITE, ilk)); in rangelock_wlock()