Lines Matching refs:class

159           struct psref_class *class;  in psref_class_create()  local
163 class = kmem_alloc(sizeof(*class), KM_SLEEP); in psref_class_create()
164 class->prc_percpu = percpu_alloc(sizeof(struct psref_cpu)); in psref_class_create()
165 mutex_init(&class->prc_lock, MUTEX_DEFAULT, ipl); in psref_class_create()
166 cv_init(&class->prc_cv, name); in psref_class_create()
167 class->prc_iplcookie = makeiplcookie(ipl); in psref_class_create()
168 class->prc_xc_flags = XC_HIGHPRI_IPL(ipl); in psref_class_create()
170 return class; in psref_class_create()
201 psref_class_destroy(struct psref_class *class) in psref_class_destroy() argument
204 KASSERT(psref_class_drained_p(class)); in psref_class_destroy()
206 cv_destroy(&class->prc_cv); in psref_class_destroy()
207 mutex_destroy(&class->prc_lock); in psref_class_destroy()
208 percpu_free(class->prc_percpu, sizeof(struct psref_cpu)); in psref_class_destroy()
209 kmem_free(class, sizeof(*class)); in psref_class_destroy()
222 struct psref_class *class) in psref_target_init() argument
225 target->prt_class = class; in psref_target_init()
285 struct psref_class *class) in psref_acquire() argument
297 KASSERTMSG((target->prt_class == class), in psref_acquire()
299 target->prt_class, class); in psref_acquire()
302 s = splraiseipl(class->prc_iplcookie); in psref_acquire()
303 pcpu = percpu_getref(class->prc_percpu); in psref_acquire()
317 percpu_putref(class->prc_percpu); in psref_acquire()
339 struct psref_class *class) in psref_release() argument
349 KASSERTMSG((target->prt_class == class), in psref_release()
351 target->prt_class, class); in psref_release()
370 s = splraiseipl(class->prc_iplcookie); in psref_release()
371 pcpu = percpu_getref(class->prc_percpu); in psref_release()
377 percpu_putref(class->prc_percpu); in psref_release()
390 cv_broadcast(&class->prc_cv); in psref_release()
406 struct psref_class *class) in psref_copy() argument
427 KASSERTMSG((pfrom->psref_target->prt_class == class), in psref_copy()
429 pfrom->psref_target->prt_class, class); in psref_copy()
432 s = splraiseipl(class->prc_iplcookie); in psref_copy()
433 pcpu = percpu_getref(class->prc_percpu); in psref_copy()
442 percpu_putref(class->prc_percpu); in psref_copy()
456 struct psref_class *class; member
478 if (_psref_held(P->target, P->class, true)) in psreffed_p_xc()
483 psreffed_p(struct psref_target *target, struct psref_class *class) in psreffed_p() argument
486 .class = class, in psreffed_p()
496 xc_wait(xc_broadcast(class->prc_xc_flags, &psreffed_p_xc, &P, in psreffed_p()
513 psref_target_destroy(struct psref_target *target, struct psref_class *class) in psref_target_destroy() argument
520 KASSERTMSG((target->prt_class == class), in psref_target_destroy()
522 target->prt_class, class); in psref_target_destroy()
528 while (psreffed_p(target, class)) { in psref_target_destroy()
536 mutex_enter(&class->prc_lock); in psref_target_destroy()
537 (void)cv_timedwait(&class->prc_cv, &class->prc_lock, 1); in psref_target_destroy()
538 mutex_exit(&class->prc_lock); in psref_target_destroy()
546 _psref_held(const struct psref_target *target, struct psref_class *class, in _psref_held() argument
559 KASSERTMSG((target->prt_class == class), in _psref_held()
561 target->prt_class, class); in _psref_held()
564 s = splraiseipl(class->prc_iplcookie); in _psref_held()
565 pcpu = percpu_getref(class->prc_percpu); in _psref_held()
594 percpu_putref(class->prc_percpu); in _psref_held()
607 psref_held(const struct psref_target *target, struct psref_class *class) in psref_held() argument
610 return _psref_held(target, class, false); in psref_held()