Lines Matching defs:pool_percpu
53 * threadpool_percpu_get(&pool_percpu, pri), and then use the thread
54 * pool returned by threadpool_percpu_ref(pool_percpu) for the current
55 * CPU, or by threadpool_percpu_ref_remote(pool_percpu, ci) for another
56 * CPU. When you're done, call threadpool_percpu_put(pool_percpu,
574 struct threadpool_percpu *pool_percpu, *tmp = NULL;
585 pool_percpu = threadpool_lookup_percpu(pri);
586 if (pool_percpu == NULL) {
594 pool_percpu = threadpool_lookup_percpu(pri);
595 if (pool_percpu == NULL) {
596 pool_percpu = tmp;
598 threadpool_insert_percpu(pool_percpu);
604 KASSERT(pool_percpu != NULL);
605 pool_percpu->tpp_refcnt++;
606 KASSERT(pool_percpu->tpp_refcnt != 0);
611 KASSERT(pool_percpu != NULL);
612 *pool_percpup = pool_percpu;
617 threadpool_percpu_put(struct threadpool_percpu *pool_percpu, pri_t pri)
624 SDT_PROBE2(sdt, kernel, threadpool, percpu__put, pool_percpu, pri);
627 KASSERT(pool_percpu == threadpool_lookup_percpu(pri));
628 KASSERT(0 < pool_percpu->tpp_refcnt);
629 if (--pool_percpu->tpp_refcnt == 0) {
631 pool_percpu, pri);
632 threadpool_remove_percpu(pool_percpu);
634 pool_percpu = NULL;
638 if (pool_percpu)
639 threadpool_percpu_destroy(pool_percpu);
643 threadpool_percpu_ref(struct threadpool_percpu *pool_percpu)
647 poolp = percpu_getref(pool_percpu->tpp_percpu);
649 percpu_putref(pool_percpu->tpp_percpu);
655 threadpool_percpu_ref_remote(struct threadpool_percpu *pool_percpu,
667 poolp = percpu_getptr_remote(pool_percpu->tpp_percpu, ci);
677 struct threadpool_percpu *pool_percpu;
680 pool_percpu = kmem_zalloc(sizeof(*pool_percpu), KM_SLEEP);
681 pool_percpu->tpp_pri = pri;
682 pool_percpu->tpp_percpu = percpu_create(sizeof(struct threadpool *),
691 percpu_foreach(pool_percpu->tpp_percpu, &threadpool_percpu_ok, &ok);
696 *pool_percpup = (struct threadpool_percpu *)pool_percpu;
699 fail: percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *));
700 kmem_free(pool_percpu, sizeof(*pool_percpu));
705 threadpool_percpu_destroy(struct threadpool_percpu *pool_percpu)
708 percpu_free(pool_percpu->tpp_percpu, sizeof(struct threadpool *));
709 kmem_free(pool_percpu, sizeof(*pool_percpu));