Lines Matching refs:pool
358 SVCPOOL *pool; in svc_zoneshutdown() local
361 while ((pool = svc->svc_pools) != NULL) { in svc_zoneshutdown()
362 svc_pool_unregister(svc, pool); in svc_zoneshutdown()
397 svc_pool_cleanup(SVCPOOL *pool) in svc_pool_cleanup() argument
399 ASSERT(pool->p_threads + pool->p_detached_threads == 0); in svc_pool_cleanup()
400 ASSERT(pool->p_lcount == 0); in svc_pool_cleanup()
401 ASSERT(pool->p_closing); in svc_pool_cleanup()
408 if (pool->p_shutdown != NULL) in svc_pool_cleanup()
409 (pool->p_shutdown)(); in svc_pool_cleanup()
412 svc_xprt_qdestroy(pool); in svc_pool_cleanup()
415 rw_destroy(&pool->p_lrwlock); in svc_pool_cleanup()
418 mutex_destroy(&pool->p_thread_lock); in svc_pool_cleanup()
419 mutex_destroy(&pool->p_req_lock); in svc_pool_cleanup()
420 cv_destroy(&pool->p_req_cv); in svc_pool_cleanup()
423 mutex_destroy(&pool->p_creator_lock); in svc_pool_cleanup()
424 cv_destroy(&pool->p_creator_cv); in svc_pool_cleanup()
425 mutex_destroy(&pool->p_user_lock); in svc_pool_cleanup()
426 cv_destroy(&pool->p_user_cv); in svc_pool_cleanup()
429 kmem_free(pool, sizeof (SVCPOOL)); in svc_pool_cleanup()
437 svc_pool_tryexit(SVCPOOL *pool) in svc_pool_tryexit() argument
439 ASSERT(MUTEX_HELD(&pool->p_thread_lock)); in svc_pool_tryexit()
440 ASSERT(pool->p_closing); in svc_pool_tryexit()
442 if (pool->p_threads + pool->p_detached_threads == 0) { in svc_pool_tryexit()
443 rw_enter(&pool->p_lrwlock, RW_READER); in svc_pool_tryexit()
444 if (pool->p_lcount == 0) { in svc_pool_tryexit()
448 rw_exit(&pool->p_lrwlock); in svc_pool_tryexit()
449 mutex_exit(&pool->p_thread_lock); in svc_pool_tryexit()
457 ASSERT(!MUTEX_HELD(&pool->p_thread_lock)); in svc_pool_tryexit()
458 svc_creator_signalexit(pool); in svc_pool_tryexit()
462 rw_exit(&pool->p_lrwlock); in svc_pool_tryexit()
465 ASSERT(MUTEX_HELD(&pool->p_thread_lock)); in svc_pool_tryexit()
475 SVCPOOL *pool; in svc_pool_find() local
483 for (pool = svc->svc_pools; pool; pool = pool->p_next) in svc_pool_find()
484 if (pool->p_id == id) in svc_pool_find()
485 return (pool); in svc_pool_find()
499 SVCPOOL *pool; in svc_do_run() local
506 pool = svc_pool_find(svc, id); in svc_do_run()
510 if (pool == NULL) in svc_do_run()
517 mutex_enter(&pool->p_thread_lock); in svc_do_run()
518 pool->p_threads++; in svc_do_run()
519 mutex_exit(&pool->p_thread_lock); in svc_do_run()
522 err = svc_run(pool); in svc_do_run()
533 svc_pool_unregister(struct svc_globals *svc, SVCPOOL *pool) in svc_pool_unregister() argument
535 SVCPOOL *next = pool->p_next; in svc_pool_unregister()
536 SVCPOOL *prev = pool->p_prev; in svc_pool_unregister()
541 if (pool == svc->svc_pools) in svc_pool_unregister()
547 pool->p_next = pool->p_prev = NULL; in svc_pool_unregister()
554 mutex_enter(&pool->p_thread_lock); in svc_pool_unregister()
555 if (pool->p_offline != NULL) in svc_pool_unregister()
556 (pool->p_offline)(); in svc_pool_unregister()
557 pool->p_closing = TRUE; in svc_pool_unregister()
558 if (svc_pool_tryexit(pool)) in svc_pool_unregister()
560 mutex_exit(&pool->p_thread_lock); in svc_pool_unregister()
569 svc_pool_register(struct svc_globals *svc, SVCPOOL *pool, int id) in svc_pool_register() argument
583 pool->p_id = id; in svc_pool_register()
584 pool->p_next = svc->svc_pools; in svc_pool_register()
585 pool->p_prev = NULL; in svc_pool_register()
587 svc->svc_pools->p_prev = pool; in svc_pool_register()
588 svc->svc_pools = pool; in svc_pool_register()
597 svc_pool_init(SVCPOOL *pool, uint_t maxthreads, uint_t redline, in svc_pool_init() argument
602 ASSERT(pool); in svc_pool_init()
621 svc_xprt_qinit(pool, qsize); in svc_pool_init()
624 rw_init(&pool->p_lrwlock, NULL, RW_DEFAULT, NULL); in svc_pool_init()
637 pool->p_maxthreads = maxthreads; in svc_pool_init()
638 pool->p_redline = redline; in svc_pool_init()
639 pool->p_timeout = timeout * hz; in svc_pool_init()
640 pool->p_stksize = stksize; in svc_pool_init()
641 pool->p_max_same_xprt = max_same_xprt; in svc_pool_init()
642 mutex_init(&pool->p_thread_lock, NULL, MUTEX_DEFAULT, NULL); in svc_pool_init()
643 mutex_init(&pool->p_req_lock, NULL, MUTEX_DEFAULT, NULL); in svc_pool_init()
644 cv_init(&pool->p_req_cv, NULL, CV_DEFAULT, NULL); in svc_pool_init()
647 pool->p_user_exit = FALSE; in svc_pool_init()
648 pool->p_signal_create_thread = FALSE; in svc_pool_init()
649 pool->p_user_waiting = FALSE; in svc_pool_init()
650 mutex_init(&pool->p_user_lock, NULL, MUTEX_DEFAULT, NULL); in svc_pool_init()
651 cv_init(&pool->p_user_cv, NULL, CV_DEFAULT, NULL); in svc_pool_init()
654 pool->p_creator_exit = FALSE; in svc_pool_init()
655 mutex_init(&pool->p_creator_lock, NULL, MUTEX_DEFAULT, NULL); in svc_pool_init()
656 cv_init(&pool->p_creator_cv, NULL, CV_DEFAULT, NULL); in svc_pool_init()
658 (void) zthread_create(NULL, pool->p_stksize, svc_thread_creator, in svc_pool_init()
659 pool, 0, minclsyspri); in svc_pool_init()
680 SVCPOOL *pool; in svc_pool_create() local
691 pool = kmem_zalloc(sizeof (SVCPOOL), KM_SLEEP); in svc_pool_create()
696 error = svc_pool_init(pool, args->maxthreads, args->redline, in svc_pool_create()
700 kmem_free(pool, sizeof (SVCPOOL)); in svc_pool_create()
705 svc_pool_register(svc, pool, args->id); in svc_pool_create()
713 SVCPOOL *pool; in svc_pool_control() local
726 if ((pool = svc_pool_find(svc, id)) == NULL) { in svc_pool_control()
734 rw_enter(&pool->p_lrwlock, RW_WRITER); in svc_pool_control()
737 pool->p_shutdown = *((void (*)())arg); in svc_pool_control()
739 rw_exit(&pool->p_lrwlock); in svc_pool_control()
749 if ((pool = svc_pool_find(svc, id)) == NULL) { in svc_pool_control()
757 rw_enter(&pool->p_lrwlock, RW_WRITER); in svc_pool_control()
760 pool->p_offline = *((void (*)())arg); in svc_pool_control()
762 rw_exit(&pool->p_lrwlock); in svc_pool_control()
787 SVCPOOL *pool; in svc_xprt_register() local
797 if ((pool = svc_pool_find(svc, id)) == NULL) { in svc_xprt_register()
803 rw_enter(&pool->p_lrwlock, RW_WRITER); in svc_xprt_register()
807 if (pool->p_closing) { in svc_xprt_register()
808 rw_exit(&pool->p_lrwlock); in svc_xprt_register()
816 xprt->xp_pool = pool; in svc_xprt_register()
822 if (pool->p_lhead == NULL) in svc_xprt_register()
823 pool->p_lhead = xprt->xp_prev = xprt->xp_next = xprt; in svc_xprt_register()
825 next = pool->p_lhead; in svc_xprt_register()
826 prev = pool->p_lhead->xp_prev; in svc_xprt_register()
831 pool->p_lhead = prev->xp_next = next->xp_prev = xprt; in svc_xprt_register()
835 pool->p_lcount++; in svc_xprt_register()
837 rw_exit(&pool->p_lrwlock); in svc_xprt_register()
849 SVCPOOL *pool = xprt->xp_pool; in svc_xprt_unregister() local
857 rw_enter(&pool->p_lrwlock, RW_WRITER); in svc_xprt_unregister()
860 pool->p_lhead = NULL; in svc_xprt_unregister()
868 if (pool->p_lhead == xprt) in svc_xprt_unregister()
869 pool->p_lhead = next; in svc_xprt_unregister()
875 pool->p_lcount--; in svc_xprt_unregister()
877 rw_exit(&pool->p_lrwlock); in svc_xprt_unregister()
881 svc_xprt_qdestroy(SVCPOOL *pool) in svc_xprt_qdestroy() argument
883 mutex_destroy(&pool->p_qend_lock); in svc_xprt_qdestroy()
884 kmem_free(pool->p_qbody, pool->p_qsize * sizeof (__SVCXPRT_QNODE)); in svc_xprt_qdestroy()
891 svc_xprt_qinit(SVCPOOL *pool, size_t qsize) in svc_xprt_qinit() argument
895 pool->p_qsize = qsize; in svc_xprt_qinit()
896 pool->p_qbody = kmem_zalloc(pool->p_qsize * sizeof (__SVCXPRT_QNODE), in svc_xprt_qinit()
899 for (i = 0; i < pool->p_qsize - 1; i++) in svc_xprt_qinit()
900 pool->p_qbody[i].q_next = &(pool->p_qbody[i+1]); in svc_xprt_qinit()
902 pool->p_qbody[pool->p_qsize-1].q_next = &(pool->p_qbody[0]); in svc_xprt_qinit()
903 pool->p_qtop = &(pool->p_qbody[0]); in svc_xprt_qinit()
904 pool->p_qend = &(pool->p_qbody[0]); in svc_xprt_qinit()
906 mutex_init(&pool->p_qend_lock, NULL, MUTEX_DEFAULT, NULL); in svc_xprt_qinit()
919 svc_xprt_qput(SVCPOOL *pool, SVCMASTERXPRT *xprt) in svc_xprt_qput() argument
921 ASSERT(MUTEX_HELD(&pool->p_req_lock)); in svc_xprt_qput()
924 if (pool->p_qoverflow) in svc_xprt_qput()
928 if (pool->p_qtop->q_next == pool->p_qend) { in svc_xprt_qput()
929 mutex_enter(&pool->p_qend_lock); in svc_xprt_qput()
930 if (pool->p_qtop->q_next == pool->p_qend) { in svc_xprt_qput()
931 pool->p_qoverflow = TRUE; in svc_xprt_qput()
932 mutex_exit(&pool->p_qend_lock); in svc_xprt_qput()
935 mutex_exit(&pool->p_qend_lock); in svc_xprt_qput()
939 pool->p_qtop->q_xprt = xprt; in svc_xprt_qput()
940 pool->p_qtop = pool->p_qtop->q_next; in svc_xprt_qput()
954 svc_xprt_qget(SVCPOOL *pool) in svc_xprt_qget() argument
958 mutex_enter(&pool->p_qend_lock); in svc_xprt_qget()
967 if (pool->p_qend == pool->p_qtop) { in svc_xprt_qget()
968 mutex_exit(&pool->p_qend_lock); in svc_xprt_qget()
973 xprt = pool->p_qend->q_xprt; in svc_xprt_qget()
974 pool->p_qend = pool->p_qend->q_next; in svc_xprt_qget()
978 mutex_exit(&pool->p_qend_lock); in svc_xprt_qget()
989 svc_xprt_qdelete(SVCPOOL *pool, SVCMASTERXPRT *xprt) in svc_xprt_qdelete() argument
993 mutex_enter(&pool->p_req_lock); in svc_xprt_qdelete()
994 for (q = pool->p_qend; q != pool->p_qtop; q = q->q_next) { in svc_xprt_qdelete()
998 mutex_exit(&pool->p_req_lock); in svc_xprt_qdelete()
1582 svc_thread_exit(SVCPOOL *pool, SVCXPRT *clone_xprt) in svc_thread_exit() argument
1588 mutex_enter(&pool->p_thread_lock); in svc_thread_exit()
1589 pool->p_threads--; in svc_thread_exit()
1590 if (pool->p_closing && svc_pool_tryexit(pool)) in svc_thread_exit()
1593 mutex_exit(&pool->p_thread_lock); in svc_thread_exit()
1609 svc_thread_exitdetached(SVCPOOL *pool, SVCXPRT *clone_xprt) in svc_thread_exitdetached() argument
1614 ASSERT(!MUTEX_HELD(&pool->p_thread_lock)); in svc_thread_exitdetached()
1619 mutex_enter(&pool->p_thread_lock); in svc_thread_exitdetached()
1621 ASSERT(pool->p_reserved_threads >= 0); in svc_thread_exitdetached()
1622 ASSERT(pool->p_detached_threads > 0); in svc_thread_exitdetached()
1624 pool->p_detached_threads--; in svc_thread_exitdetached()
1625 if (pool->p_closing && svc_pool_tryexit(pool)) in svc_thread_exitdetached()
1628 mutex_exit(&pool->p_thread_lock); in svc_thread_exitdetached()
1642 SVCPOOL *pool; in svc_wait() local
1648 pool = svc_pool_find(svc, id); in svc_wait()
1651 if (pool == NULL) in svc_wait()
1654 mutex_enter(&pool->p_user_lock); in svc_wait()
1657 if (pool->p_user_waiting) { in svc_wait()
1658 mutex_exit(&pool->p_user_lock); in svc_wait()
1662 pool->p_user_waiting = TRUE; in svc_wait()
1665 while (!pool->p_signal_create_thread && !pool->p_user_exit) { in svc_wait()
1666 if (cv_wait_sig(&pool->p_user_cv, &pool->p_user_lock) == 0) { in svc_wait()
1668 pool->p_user_waiting = FALSE; in svc_wait()
1669 pool->p_signal_create_thread = FALSE; in svc_wait()
1670 mutex_exit(&pool->p_user_lock); in svc_wait()
1679 svc_pool_unregister(svc, pool); in svc_wait()
1686 pool->p_signal_create_thread = FALSE; in svc_wait()
1687 pool->p_user_waiting = FALSE; in svc_wait()
1695 if (pool->p_user_exit) { in svc_wait()
1697 cv_signal(&pool->p_user_cv); in svc_wait()
1700 mutex_exit(&pool->p_user_lock); in svc_wait()
1711 svc_thread_creator(SVCPOOL *pool) in svc_thread_creator() argument
1715 CALLB_CPR_INIT(&cpr_info, &pool->p_creator_lock, callb_generic_cpr, in svc_thread_creator()
1719 mutex_enter(&pool->p_creator_lock); in svc_thread_creator()
1722 if (pool->p_creator_exit) in svc_thread_creator()
1726 pool->p_creator_signaled = FALSE; in svc_thread_creator()
1729 cv_wait(&pool->p_creator_cv, &pool->p_creator_lock); in svc_thread_creator()
1730 CALLB_CPR_SAFE_END(&cpr_info, &pool->p_creator_lock); in svc_thread_creator()
1733 if (pool->p_creator_exit) in svc_thread_creator()
1736 mutex_exit(&pool->p_creator_lock); in svc_thread_creator()
1738 mutex_enter(&pool->p_thread_lock); in svc_thread_creator()
1744 if (pool->p_closing) { in svc_thread_creator()
1745 rw_enter(&pool->p_lrwlock, RW_READER); in svc_thread_creator()
1746 if (pool->p_lcount == 0) { in svc_thread_creator()
1747 rw_exit(&pool->p_lrwlock); in svc_thread_creator()
1748 mutex_exit(&pool->p_thread_lock); in svc_thread_creator()
1751 rw_exit(&pool->p_lrwlock); in svc_thread_creator()
1757 ASSERT(pool->p_reserved_threads >= 0); in svc_thread_creator()
1758 ASSERT(pool->p_detached_threads >= 0); in svc_thread_creator()
1760 if (pool->p_threads + pool->p_detached_threads < in svc_thread_creator()
1761 pool->p_maxthreads) { in svc_thread_creator()
1766 mutex_enter(&pool->p_user_lock); in svc_thread_creator()
1767 if (pool->p_signal_create_thread == FALSE) { in svc_thread_creator()
1768 pool->p_signal_create_thread = TRUE; in svc_thread_creator()
1769 cv_signal(&pool->p_user_cv); in svc_thread_creator()
1771 mutex_exit(&pool->p_user_lock); in svc_thread_creator()
1775 mutex_exit(&pool->p_thread_lock); in svc_thread_creator()
1783 mutex_enter(&pool->p_user_lock); in svc_thread_creator()
1784 pool->p_user_exit = TRUE; in svc_thread_creator()
1785 cv_broadcast(&pool->p_user_cv); in svc_thread_creator()
1786 mutex_exit(&pool->p_user_lock); in svc_thread_creator()
1789 mutex_enter(&pool->p_user_lock); in svc_thread_creator()
1790 while (pool->p_user_waiting) { in svc_thread_creator()
1792 cv_wait(&pool->p_user_cv, &pool->p_user_lock); in svc_thread_creator()
1793 CALLB_CPR_SAFE_END(&cpr_info, &pool->p_creator_lock); in svc_thread_creator()
1795 mutex_exit(&pool->p_user_lock); in svc_thread_creator()
1798 svc_pool_cleanup(pool); in svc_thread_creator()
1807 svc_creator_signal(SVCPOOL *pool) in svc_creator_signal() argument
1809 mutex_enter(&pool->p_creator_lock); in svc_creator_signal()
1810 if (pool->p_creator_signaled == FALSE) { in svc_creator_signal()
1811 pool->p_creator_signaled = TRUE; in svc_creator_signal()
1812 cv_signal(&pool->p_creator_cv); in svc_creator_signal()
1814 mutex_exit(&pool->p_creator_lock); in svc_creator_signal()
1821 svc_creator_signalexit(SVCPOOL *pool) in svc_creator_signalexit() argument
1823 mutex_enter(&pool->p_creator_lock); in svc_creator_signalexit()
1824 pool->p_creator_exit = TRUE; in svc_creator_signalexit()
1825 cv_signal(&pool->p_creator_cv); in svc_creator_signalexit()
1826 mutex_exit(&pool->p_creator_lock); in svc_creator_signalexit()
1840 svc_poll(SVCPOOL *pool, SVCMASTERXPRT *xprt, SVCXPRT *clone_xprt) in svc_poll() argument
1869 if (xprt && xprt->xp_req_head && (!pool->p_qoverflow || in svc_poll()
1870 clone_xprt->xp_same_xprt++ < pool->p_max_same_xprt)) { in svc_poll()
1883 mutex_enter(&pool->p_req_lock); in svc_poll()
1884 pool->p_walkers++; in svc_poll()
1885 mutex_exit(&pool->p_req_lock); in svc_poll()
1891 rw_enter(&pool->p_lrwlock, RW_READER); in svc_poll()
1907 hint = svc_xprt_qget(pool); in svc_poll()
1912 rw_exit(&pool->p_lrwlock); in svc_poll()
1914 mutex_enter(&pool->p_req_lock); in svc_poll()
1915 pool->p_walkers--; in svc_poll()
1916 mutex_exit(&pool->p_req_lock); in svc_poll()
1932 if (pool->p_reqs < pool->p_walkers) { in svc_poll()
1933 mutex_enter(&pool->p_req_lock); in svc_poll()
1934 if (pool->p_reqs < pool->p_walkers) in svc_poll()
1936 mutex_exit(&pool->p_req_lock); in svc_poll()
1938 if (pool->p_qoverflow) { in svc_poll()
1955 if (xprt == NULL && pool->p_lhead == NULL) { in svc_poll()
1956 mutex_enter(&pool->p_req_lock); in svc_poll()
1965 next = xprt ? xprt->xp_next : pool->p_lhead; in svc_poll()
1982 rw_exit(&pool->p_lrwlock); in svc_poll()
1984 mutex_enter(&pool->p_req_lock); in svc_poll()
1985 pool->p_walkers--; in svc_poll()
1986 mutex_exit(&pool->p_req_lock); in svc_poll()
1999 if (pool->p_reqs < pool->p_walkers) { in svc_poll()
2001 mutex_enter(&pool->p_req_lock); in svc_poll()
2002 if (pool->p_reqs < pool->p_walkers) in svc_poll()
2004 mutex_exit(&pool->p_req_lock); in svc_poll()
2015 pool->p_walkers--; in svc_poll()
2016 rw_exit(&pool->p_lrwlock); in svc_poll()
2022 pool->p_asleep++; in svc_poll()
2023 timeleft = cv_reltimedwait_sig(&pool->p_req_cv, in svc_poll()
2024 &pool->p_req_lock, pool->p_timeout, TR_CLOCK_TICK); in svc_poll()
2035 if (pool->p_drowsy) { in svc_poll()
2036 pool->p_drowsy = FALSE; in svc_poll()
2045 pool->p_asleep--; in svc_poll()
2047 mutex_exit(&pool->p_req_lock); in svc_poll()
2158 SVCPOOL *pool = xprt->xp_pool; in svc_flowcontrol() local
2160 int enough_reqs = pool->p_maxthreads * pool->p_max_same_xprt; in svc_flowcontrol()
2180 if (pool->p_size >= totalmem / 5 && in svc_flowcontrol()
2181 xprt->xp_size >= totalmem / 5 / pool->p_lcount) in svc_flowcontrol()
2197 if (pool->p_size >= totalmem / 6 && in svc_flowcontrol()
2198 xprt->xp_size >= totalmem / 5 / pool->p_lcount / 2) in svc_flowcontrol()
2216 svc_run(SVCPOOL *pool) in svc_run() argument
2243 svc_thread_exit(pool, clone_xprt); in svc_run()
2248 next = svc_poll(pool, xprt, clone_xprt); in svc_run()
2271 svc_thread_exit(pool, clone_xprt); in svc_run()
2280 svc_thread_exit(pool, clone_xprt); in svc_run()
2293 mutex_enter(&pool->p_req_lock); in svc_run()
2294 pool->p_reqs--; in svc_run()
2295 if (pool->p_reqs == 0) in svc_run()
2296 pool->p_qoverflow = FALSE; in svc_run()
2297 pool->p_size -= size; in svc_run()
2298 mutex_exit(&pool->p_req_lock); in svc_run()
2307 "rpc_que_req_deq:pool %p mp %p", pool, mp); in svc_run()
2332 if (!(pool->p_drowsy || pool->p_reqs <= pool->p_walkers || in svc_run()
2333 pool->p_asleep == 0)) { in svc_run()
2334 mutex_enter(&pool->p_req_lock); in svc_run()
2336 if (pool->p_drowsy || pool->p_reqs <= pool->p_walkers || in svc_run()
2337 pool->p_asleep == 0) in svc_run()
2338 mutex_exit(&pool->p_req_lock); in svc_run()
2340 pool->p_asleep--; in svc_run()
2341 pool->p_drowsy = TRUE; in svc_run()
2343 cv_signal(&pool->p_req_cv); in svc_run()
2344 mutex_exit(&pool->p_req_lock); in svc_run()
2358 if (pool->p_asleep == 0 && !pool->p_drowsy && in svc_run()
2359 pool->p_threads + pool->p_detached_threads < in svc_run()
2360 pool->p_maxthreads) in svc_run()
2361 svc_creator_signal(pool); in svc_run()
2377 svc_thread_exitdetached(pool, clone_xprt); in svc_run()
2404 SVCPOOL *pool; in svc_queueclean() local
2410 pool = xprt->xp_pool; in svc_queueclean()
2418 mutex_enter(&pool->p_req_lock); in svc_queueclean()
2419 pool->p_reqs -= xprt->xp_reqs; in svc_queueclean()
2420 pool->p_size -= xprt->xp_size; in svc_queueclean()
2421 mutex_exit(&pool->p_req_lock); in svc_queueclean()
2465 SVCPOOL *pool = xprt->xp_pool; in svc_queueclose() local
2473 mutex_enter(&pool->p_thread_lock); in svc_queueclose()
2480 if (pool->p_closing && svc_pool_tryexit(pool)) { in svc_queueclose()
2483 mutex_exit(&pool->p_thread_lock); in svc_queueclose()
2519 SVCPOOL *pool = xprt->xp_pool; in svc_queuereq() local
2543 mutex_enter(&pool->p_req_lock); in svc_queuereq()
2558 svc_xprt_qput(pool, xprt); in svc_queuereq()
2561 pool->p_reqs++; in svc_queuereq()
2566 pool->p_size += size; in svc_queuereq()
2573 "rpc_que_req_enq:pool %p mp %p", pool, mp); in svc_queuereq()
2583 if (pool->p_drowsy || pool->p_reqs <= pool->p_walkers || in svc_queuereq()
2584 pool->p_asleep == 0) { in svc_queuereq()
2585 mutex_exit(&pool->p_req_lock); in svc_queuereq()
2587 pool->p_drowsy = TRUE; in svc_queuereq()
2588 pool->p_asleep--; in svc_queuereq()
2593 cv_signal(&pool->p_req_cv); in svc_queuereq()
2594 mutex_exit(&pool->p_req_lock); in svc_queuereq()
2609 if (pool->p_asleep == 0 && !pool->p_drowsy && in svc_queuereq()
2610 pool->p_threads + pool->p_detached_threads < pool->p_maxthreads) in svc_queuereq()
2611 svc_creator_signal(pool); in svc_queuereq()
2638 SVCPOOL *pool = clone_xprt->xp_master->xp_pool; in svc_reserve_thread() local
2645 mutex_enter(&pool->p_thread_lock); in svc_reserve_thread()
2646 if (pool->p_reserved_threads + pool->p_detached_threads >= in svc_reserve_thread()
2647 pool->p_maxthreads - pool->p_redline) { in svc_reserve_thread()
2648 mutex_exit(&pool->p_thread_lock); in svc_reserve_thread()
2651 pool->p_reserved_threads++; in svc_reserve_thread()
2652 mutex_exit(&pool->p_thread_lock); in svc_reserve_thread()
2668 SVCPOOL *pool = clone_xprt->xp_master->xp_pool; in svc_unreserve_thread() local
2675 mutex_enter(&pool->p_thread_lock); in svc_unreserve_thread()
2676 pool->p_reserved_threads--; in svc_unreserve_thread()
2677 mutex_exit(&pool->p_thread_lock); in svc_unreserve_thread()
2706 SVCPOOL *pool = xprt->xp_pool; in svc_detach_thread() local
2720 mutex_enter(&pool->p_thread_lock); in svc_detach_thread()
2721 pool->p_threads--; in svc_detach_thread()
2722 pool->p_reserved_threads--; in svc_detach_thread()
2723 pool->p_detached_threads++; in svc_detach_thread()
2724 mutex_exit(&pool->p_thread_lock); in svc_detach_thread()
2758 SVCPOOL *pool; in rdma_stop() local
2775 pool = xprt->xp_pool; in rdma_stop()
2787 mutex_enter(&pool->p_req_lock); in rdma_stop()
2788 pool->p_reqs -= xprt->xp_reqs; in rdma_stop()
2789 pool->p_size -= xprt->xp_size; in rdma_stop()
2790 mutex_exit(&pool->p_req_lock); in rdma_stop()