Lines Matching refs:rl

121 rangelock_init(rangelock_t *rl, rangelock_cb_t *cb, void *arg)  in rangelock_init()  argument
123 mutex_init(&rl->rl_lock, NULL, MUTEX_DEFAULT, NULL); in rangelock_init()
124 avl_create(&rl->rl_tree, rangelock_compare, in rangelock_init()
126 rl->rl_cb = cb; in rangelock_init()
127 rl->rl_arg = arg; in rangelock_init()
131 rangelock_fini(rangelock_t *rl) in rangelock_fini() argument
133 mutex_destroy(&rl->rl_lock); in rangelock_fini()
134 avl_destroy(&rl->rl_tree); in rangelock_fini()
141 rangelock_enter_writer(rangelock_t *rl, locked_range_t *new) in rangelock_enter_writer() argument
143 avl_tree_t *tree = &rl->rl_tree; in rangelock_enter_writer()
156 if (rl->rl_cb != NULL) { in rangelock_enter_writer()
157 rl->rl_cb(new, rl->rl_arg); in rangelock_enter_writer()
198 cv_wait(&lr->lr_write_cv, &rl->rl_lock); in rangelock_enter_writer()
378 rangelock_enter_reader(rangelock_t *rl, locked_range_t *new) in rangelock_enter_reader() argument
380 avl_tree_t *tree = &rl->rl_tree; in rangelock_enter_reader()
404 cv_wait(&prev->lr_read_cv, &rl->rl_lock); in rangelock_enter_reader()
428 cv_wait(&next->lr_read_cv, &rl->rl_lock); in rangelock_enter_reader()
451 rangelock_enter(rangelock_t *rl, uint64_t off, uint64_t len, in rangelock_enter() argument
457 new->lr_rangelock = rl; in rangelock_enter()
468 mutex_enter(&rl->rl_lock); in rangelock_enter()
473 if (avl_numnodes(&rl->rl_tree) == 0) in rangelock_enter()
474 avl_add(&rl->rl_tree, new); in rangelock_enter()
476 rangelock_enter_reader(rl, new); in rangelock_enter()
478 rangelock_enter_writer(rl, new); /* RL_WRITER or RL_APPEND */ in rangelock_enter()
479 mutex_exit(&rl->rl_lock); in rangelock_enter()
487 rangelock_exit_reader(rangelock_t *rl, locked_range_t *remove) in rangelock_exit_reader() argument
489 avl_tree_t *tree = &rl->rl_tree; in rangelock_exit_reader()
557 rangelock_t *rl = lr->lr_rangelock; in rangelock_exit() local
563 mutex_enter(&rl->rl_lock); in rangelock_exit()
566 avl_remove(&rl->rl_tree, lr); in rangelock_exit()
567 mutex_exit(&rl->rl_lock); in rangelock_exit()
582 rangelock_exit_reader(rl, lr); in rangelock_exit()
583 mutex_exit(&rl->rl_lock); in rangelock_exit()
595 rangelock_t *rl = lr->lr_rangelock; in rangelock_reduce() local
598 ASSERT3U(avl_numnodes(&rl->rl_tree), ==, 1); in rangelock_reduce()
605 mutex_enter(&rl->rl_lock); in rangelock_reduce()
608 mutex_exit(&rl->rl_lock); in rangelock_reduce()