Lines Matching refs:cur
481 struct rl_q_entry *cur, *free, *next, **prev; in rangelock_noncheating_destroy() local
487 cur = rl_q_load(prev); in rangelock_noncheating_destroy()
488 MPASS(!rl_e_is_marked(cur)); in rangelock_noncheating_destroy()
491 if (cur == NULL) in rangelock_noncheating_destroy()
493 if (rl_e_is_marked(cur)) in rangelock_noncheating_destroy()
496 next = rl_q_load(&cur->rl_q_next); in rangelock_noncheating_destroy()
499 if (rl_q_cas(prev, cur, next)) { in rangelock_noncheating_destroy()
501 cur->rl_q_owner = NULL; in rangelock_noncheating_destroy()
503 cur->rl_q_free = free; in rangelock_noncheating_destroy()
504 free = cur; in rangelock_noncheating_destroy()
505 cur = next; in rangelock_noncheating_destroy()
513 if (!rl_e_is_marked(cur)) { in rangelock_noncheating_destroy()
534 rl_conflict(struct rangelock *lock, struct rl_q_entry *cur, struct rl_q_entry *e, in rl_conflict() argument
538 if (rl_e_is_marked(rl_q_load(&cur->rl_q_next))) { in rl_conflict()
549 KASSERT(cur->rl_q_owner != curthread, in rl_conflict()
576 struct rl_q_entry *cur, *next, **prev; in rl_r_validate() local
581 cur = rl_q_load(prev); in rl_r_validate()
582 MPASS(!rl_e_is_marked(cur)); /* nobody can unlock e yet */ in rl_r_validate()
584 if (cur == NULL || cur->rl_q_start >= e->rl_q_end) in rl_r_validate()
586 next = rl_q_load(&cur->rl_q_next); in rl_r_validate()
589 if (rl_q_cas(prev, cur, next)) { in rl_r_validate()
590 cur->rl_q_free = *free; in rl_r_validate()
591 *free = cur; in rl_r_validate()
592 cur = next; in rl_r_validate()
597 if (rl_e_is_rlock(cur)) { in rl_r_validate()
598 prev = &cur->rl_q_next; in rl_r_validate()
599 cur = rl_e_unmark_unchecked(rl_q_load(prev)); in rl_r_validate()
603 res = rl_conflict(lock, cur, e, trylock, true); in rl_r_validate()
617 struct rl_q_entry *cur, *next, **prev; in rl_w_validate() local
622 cur = rl_q_load(prev); in rl_w_validate()
623 MPASS(!rl_e_is_marked(cur)); /* head is not marked */ in rl_w_validate()
625 if (cur == e) in rl_w_validate()
627 next = rl_q_load(&cur->rl_q_next); in rl_w_validate()
630 if (rl_q_cas(prev, cur, next)) { in rl_w_validate()
631 cur->rl_q_free = *free; in rl_w_validate()
632 *free = cur; in rl_w_validate()
633 cur = next; in rl_w_validate()
638 if (cur->rl_q_end <= e->rl_q_start) { in rl_w_validate()
639 prev = &cur->rl_q_next; in rl_w_validate()
640 cur = rl_e_unmark_unchecked(rl_q_load(prev)); in rl_w_validate()
644 res = rl_conflict(lock, cur, e, trylock, true); in rl_w_validate()
654 struct rl_q_entry *cur, *next, **prev; in rl_insert() local
659 cur = rl_q_load(prev); in rl_insert()
660 if (cur == NULL && rl_q_cas(prev, NULL, e)) in rl_insert()
664 if (cur != NULL) { in rl_insert()
665 if (rl_e_is_marked(cur)) in rl_insert()
668 next = rl_q_load(&cur->rl_q_next); in rl_insert()
671 if (rl_q_cas(prev, cur, next)) { in rl_insert()
673 cur->rl_q_owner = NULL; in rl_insert()
675 cur->rl_q_free = *free; in rl_insert()
676 *free = cur; in rl_insert()
677 cur = next; in rl_insert()
684 MPASS(!rl_e_is_marked(cur)); in rl_insert()
685 r = rl_e_compare(cur, e); in rl_insert()
687 prev = &cur->rl_q_next; in rl_insert()
688 cur = rl_q_load(prev); in rl_insert()
692 res = rl_conflict(lock, cur, e, trylock, false); in rl_insert()
704 e->rl_q_next = cur; in rl_insert()
705 if (rl_q_cas(prev, cur, e)) { in rl_insert()
713 cur = rl_q_load(prev); in rl_insert()