Lines Matching refs:ro

58 	struct krwobj *ro;  in rw_obj_alloc()  local
60 ro = kmem_intr_alloc(sizeof(*ro), KM_SLEEP); in rw_obj_alloc()
61 KASSERT(ALIGNED_POINTER(ro, coherency_unit)); in rw_obj_alloc()
62 _rw_init(&ro->ro_lock, (uintptr_t)__builtin_return_address(0)); in rw_obj_alloc()
63 ro->ro_magic = RW_OBJ_MAGIC; in rw_obj_alloc()
64 ro->ro_refcnt = 1; in rw_obj_alloc()
66 return (krwlock_t *)ro; in rw_obj_alloc()
77 struct krwobj *ro; in rw_obj_tryalloc() local
79 ro = kmem_intr_alloc(sizeof(*ro), KM_NOSLEEP); in rw_obj_tryalloc()
80 KASSERT(ALIGNED_POINTER(ro, coherency_unit)); in rw_obj_tryalloc()
81 if (__predict_true(ro != NULL)) { in rw_obj_tryalloc()
82 _rw_init(&ro->ro_lock, (uintptr_t)__builtin_return_address(0)); in rw_obj_tryalloc()
83 ro->ro_magic = RW_OBJ_MAGIC; in rw_obj_tryalloc()
84 ro->ro_refcnt = 1; in rw_obj_tryalloc()
87 return (krwlock_t *)ro; in rw_obj_tryalloc()
99 struct krwobj *ro = (struct krwobj *)lock; in rw_obj_hold() local
101 KASSERT(ro->ro_magic == RW_OBJ_MAGIC); in rw_obj_hold()
102 KASSERT(ro->ro_refcnt > 0); in rw_obj_hold()
104 atomic_inc_uint(&ro->ro_refcnt); in rw_obj_hold()
116 struct krwobj *ro = (struct krwobj *)lock; in rw_obj_free() local
118 KASSERT(ro->ro_magic == RW_OBJ_MAGIC); in rw_obj_free()
119 KASSERT(ro->ro_refcnt > 0); in rw_obj_free()
122 if (atomic_dec_uint_nv(&ro->ro_refcnt) > 0) { in rw_obj_free()
126 rw_destroy(&ro->ro_lock); in rw_obj_free()
127 kmem_intr_free(ro, sizeof(*ro)); in rw_obj_free()
139 struct krwobj *ro = (struct krwobj *)lock; in rw_obj_refcnt() local
141 return ro->ro_refcnt; in rw_obj_refcnt()