Lines Matching refs:pool_percpu

574 	struct threadpool_percpu *pool_percpu, *tmp = NULL;  in threadpool_percpu_get()  local
585 pool_percpu = threadpool_lookup_percpu(pri); in threadpool_percpu_get()
586 if (pool_percpu == NULL) { in threadpool_percpu_get()
594 pool_percpu = threadpool_lookup_percpu(pri); in threadpool_percpu_get()
595 if (pool_percpu == NULL) { in threadpool_percpu_get()
596 pool_percpu = tmp; in threadpool_percpu_get()
598 threadpool_insert_percpu(pool_percpu); in threadpool_percpu_get()
604 KASSERT(pool_percpu != NULL); in threadpool_percpu_get()
605 pool_percpu->tpp_refcnt++; in threadpool_percpu_get()
606 KASSERT(pool_percpu->tpp_refcnt != 0); in threadpool_percpu_get()
611 KASSERT(pool_percpu != NULL); in threadpool_percpu_get()
612 *pool_percpup = pool_percpu; in threadpool_percpu_get()
617 threadpool_percpu_put(struct threadpool_percpu *pool_percpu, pri_t pri) in threadpool_percpu_put() argument
624 SDT_PROBE2(sdt, kernel, threadpool, percpu__put, pool_percpu, pri); in threadpool_percpu_put()
627 KASSERT(pool_percpu == threadpool_lookup_percpu(pri)); in threadpool_percpu_put()
628 KASSERT(0 < pool_percpu->tpp_refcnt); in threadpool_percpu_put()
629 if (--pool_percpu->tpp_refcnt == 0) { in threadpool_percpu_put()
631 pool_percpu, pri); in threadpool_percpu_put()
632 threadpool_remove_percpu(pool_percpu); in threadpool_percpu_put()
634 pool_percpu = NULL; in threadpool_percpu_put()
638 if (pool_percpu) in threadpool_percpu_put()
639 threadpool_percpu_destroy(pool_percpu); in threadpool_percpu_put()
643 threadpool_percpu_ref(struct threadpool_percpu *pool_percpu) in threadpool_percpu_ref() argument
647 poolp = percpu_getref(pool_percpu->tpp_percpu); in threadpool_percpu_ref()
649 percpu_putref(pool_percpu->tpp_percpu); in threadpool_percpu_ref()
655 threadpool_percpu_ref_remote(struct threadpool_percpu *pool_percpu, in threadpool_percpu_ref_remote() argument
667 poolp = percpu_getptr_remote(pool_percpu->tpp_percpu, ci); in threadpool_percpu_ref_remote()
677 struct threadpool_percpu *pool_percpu; in threadpool_percpu_create() local
680 pool_percpu = kmem_zalloc(sizeof(*pool_percpu), KM_SLEEP); in threadpool_percpu_create()
681 pool_percpu->tpp_pri = pri; in threadpool_percpu_create()
682 pool_percpu->tpp_percpu = percpu_create(sizeof(struct threadpool *), in threadpool_percpu_create()
691 percpu_foreach(pool_percpu->tpp_percpu, &threadpool_percpu_ok, &ok); in threadpool_percpu_create()
696 *pool_percpup = (struct threadpool_percpu *)pool_percpu; in threadpool_percpu_create()
699 fail: percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *)); in threadpool_percpu_create()
700 kmem_free(pool_percpu, sizeof(*pool_percpu)); in threadpool_percpu_create()
705 threadpool_percpu_destroy(struct threadpool_percpu *pool_percpu) in threadpool_percpu_destroy() argument
708 percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *)); in threadpool_percpu_destroy()
709 kmem_free(pool_percpu, sizeof(*pool_percpu)); in threadpool_percpu_destroy()