Lines Matching refs:grp
74 static void svc_new_thread(SVCGROUP *grp);
90 SVCGROUP *grp; in svcpool_create() local
105 grp = &pool->sp_groups[g]; in svcpool_create()
106 mtx_init(&grp->sg_lock, "sg_lock", NULL, MTX_DEF); in svcpool_create()
107 grp->sg_pool = pool; in svcpool_create()
108 grp->sg_state = SVCPOOL_ACTIVE; in svcpool_create()
109 TAILQ_INIT(&grp->sg_xlist); in svcpool_create()
110 TAILQ_INIT(&grp->sg_active); in svcpool_create()
111 LIST_INIT(&grp->sg_idlethreads); in svcpool_create()
112 grp->sg_minthreads = 1; in svcpool_create()
113 grp->sg_maxthreads = 1; in svcpool_create()
185 SVCGROUP *grp; in svcpool_cleanup() local
195 grp = &pool->sp_groups[g]; in svcpool_cleanup()
196 mtx_lock(&grp->sg_lock); in svcpool_cleanup()
197 while ((xprt = TAILQ_FIRST(&grp->sg_xlist)) != NULL) { in svcpool_cleanup()
201 mtx_unlock(&grp->sg_lock); in svcpool_cleanup()
226 SVCGROUP *grp; in svcpool_destroy() local
232 grp = &pool->sp_groups[g]; in svcpool_destroy()
233 mtx_destroy(&grp->sg_lock); in svcpool_destroy()
251 SVCGROUP *grp; in svcpool_close() local
261 grp = &pool->sp_groups[g]; in svcpool_close()
262 mtx_lock(&grp->sg_lock); in svcpool_close()
263 grp->sg_state = SVCPOOL_ACTIVE; in svcpool_close()
264 mtx_unlock(&grp->sg_lock); in svcpool_close()
346 SVCGROUP *grp; in xprt_register() local
351 xprt->xp_group = grp = &pool->sp_groups[g]; in xprt_register()
352 mtx_lock(&grp->sg_lock); in xprt_register()
355 TAILQ_INSERT_TAIL(&grp->sg_xlist, xprt, xp_link); in xprt_register()
356 mtx_unlock(&grp->sg_lock); in xprt_register()
367 SVCGROUP *grp = xprt->xp_group; in xprt_unregister_locked() local
369 mtx_assert(&grp->sg_lock, MA_OWNED); in xprt_unregister_locked()
373 TAILQ_REMOVE(&grp->sg_xlist, xprt, xp_link); in xprt_unregister_locked()
380 SVCGROUP *grp = xprt->xp_group; in xprt_unregister() local
382 mtx_lock(&grp->sg_lock); in xprt_unregister()
385 mtx_unlock(&grp->sg_lock); in xprt_unregister()
389 mtx_unlock(&grp->sg_lock); in xprt_unregister()
402 SVCGROUP *grp = xprt->xp_group; in xprt_assignthread() local
405 mtx_assert(&grp->sg_lock, MA_OWNED); in xprt_assignthread()
406 st = LIST_FIRST(&grp->sg_idlethreads); in xprt_assignthread()
423 if (grp->sg_state == SVCPOOL_ACTIVE in xprt_assignthread()
424 && grp->sg_lastcreatetime < time_uptime in xprt_assignthread()
425 && grp->sg_threadcount < grp->sg_maxthreads) { in xprt_assignthread()
426 grp->sg_state = SVCPOOL_THREADWANTED; in xprt_assignthread()
435 SVCGROUP *grp = xprt->xp_group; in xprt_active() local
437 mtx_lock(&grp->sg_lock); in xprt_active()
443 mtx_unlock(&grp->sg_lock); in xprt_active()
452 TAILQ_INSERT_TAIL(&grp->sg_active, xprt, in xprt_active()
457 mtx_unlock(&grp->sg_lock); in xprt_active()
463 SVCGROUP *grp = xprt->xp_group; in xprt_inactive_locked() local
465 mtx_assert(&grp->sg_lock, MA_OWNED); in xprt_inactive_locked()
468 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink); in xprt_inactive_locked()
476 SVCGROUP *grp = xprt->xp_group; in xprt_inactive() local
478 mtx_lock(&grp->sg_lock); in xprt_inactive()
480 mtx_unlock(&grp->sg_lock); in xprt_inactive()
1077 svc_checkidle(SVCGROUP *grp) in svc_checkidle() argument
1084 TAILQ_FOREACH_SAFE(xprt, &grp->sg_xlist, xp_link, nxprt) { in svc_checkidle()
1099 mtx_unlock(&grp->sg_lock); in svc_checkidle()
1104 mtx_lock(&grp->sg_lock); in svc_checkidle()
1110 SVCGROUP *grp; in svc_assign_waiting_sockets() local
1115 grp = &pool->sp_groups[g]; in svc_assign_waiting_sockets()
1116 mtx_lock(&grp->sg_lock); in svc_assign_waiting_sockets()
1117 while ((xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) { in svc_assign_waiting_sockets()
1119 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink); in svc_assign_waiting_sockets()
1123 mtx_unlock(&grp->sg_lock); in svc_assign_waiting_sockets()
1158 svc_run_internal(SVCGROUP *grp, bool_t ismaster) in svc_run_internal() argument
1160 SVCPOOL *pool = grp->sg_pool; in svc_run_internal()
1176 mtx_lock(&grp->sg_lock); in svc_run_internal()
1182 if (grp->sg_state == SVCPOOL_THREADSTARTING) in svc_run_internal()
1183 grp->sg_state = SVCPOOL_ACTIVE; in svc_run_internal()
1185 while (grp->sg_state != SVCPOOL_CLOSING) { in svc_run_internal()
1189 if (grp->sg_state == SVCPOOL_THREADWANTED) { in svc_run_internal()
1190 grp->sg_state = SVCPOOL_THREADSTARTING; in svc_run_internal()
1191 grp->sg_lastcreatetime = time_uptime; in svc_run_internal()
1192 mtx_unlock(&grp->sg_lock); in svc_run_internal()
1193 svc_new_thread(grp); in svc_run_internal()
1194 mtx_lock(&grp->sg_lock); in svc_run_internal()
1201 if (time_uptime > grp->sg_lastidlecheck) { in svc_run_internal()
1202 grp->sg_lastidlecheck = time_uptime; in svc_run_internal()
1203 svc_checkidle(grp); in svc_run_internal()
1211 if (!ismaster && grp->sg_threadcount > in svc_run_internal()
1212 grp->sg_maxthreads) in svc_run_internal()
1221 (xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) { in svc_run_internal()
1222 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink); in svc_run_internal()
1229 LIST_INSERT_HEAD(&grp->sg_idlethreads, st, st_ilink); in svc_run_internal()
1231 grp->sg_threadcount > grp->sg_minthreads)) in svc_run_internal()
1233 &grp->sg_lock, 5 * hz); in svc_run_internal()
1236 &grp->sg_lock); in svc_run_internal()
1245 && (grp->sg_threadcount in svc_run_internal()
1246 > grp->sg_minthreads) in svc_run_internal()
1252 mtx_unlock(&grp->sg_lock); in svc_run_internal()
1259 mtx_lock(&grp->sg_lock); in svc_run_internal()
1263 mtx_lock(&grp->sg_lock); in svc_run_internal()
1269 mtx_unlock(&grp->sg_lock); in svc_run_internal()
1301 && grp->sg_state != SVCPOOL_CLOSING); in svc_run_internal()
1309 mtx_lock(&grp->sg_lock); in svc_run_internal()
1315 TAILQ_INSERT_TAIL(&grp->sg_active, in svc_run_internal()
1318 mtx_unlock(&grp->sg_lock); in svc_run_internal()
1334 mtx_lock(&grp->sg_lock); in svc_run_internal()
1347 grp->sg_threadcount--; in svc_run_internal()
1349 wakeup(grp); in svc_run_internal()
1350 mtx_unlock(&grp->sg_lock); in svc_run_internal()
1362 svc_new_thread(SVCGROUP *grp) in svc_new_thread() argument
1364 SVCPOOL *pool = grp->sg_pool; in svc_new_thread()
1367 mtx_lock(&grp->sg_lock); in svc_new_thread()
1368 grp->sg_threadcount++; in svc_new_thread()
1369 mtx_unlock(&grp->sg_lock); in svc_new_thread()
1370 kthread_add(svc_thread_start, grp, pool->sp_proc, &td, 0, 0, in svc_new_thread()
1380 SVCGROUP *grp; in svc_run() local
1393 grp = &pool->sp_groups[g]; in svc_run()
1394 grp->sg_minthreads = max(1, in svc_run()
1396 grp->sg_maxthreads = max(1, in svc_run()
1398 grp->sg_lastcreatetime = time_uptime; in svc_run()
1404 grp = &pool->sp_groups[g]; in svc_run()
1405 for (i = ((g == 0) ? 1 : 0); i < grp->sg_minthreads; i++) in svc_run()
1406 svc_new_thread(grp); in svc_run()
1412 grp = &pool->sp_groups[g]; in svc_run()
1413 mtx_lock(&grp->sg_lock); in svc_run()
1414 while (grp->sg_threadcount > 0) in svc_run()
1415 msleep(grp, &grp->sg_lock, 0, "svcexit", 0); in svc_run()
1416 mtx_unlock(&grp->sg_lock); in svc_run()
1423 SVCGROUP *grp; in svc_exit() local
1429 grp = &pool->sp_groups[g]; in svc_exit()
1430 mtx_lock(&grp->sg_lock); in svc_exit()
1431 if (grp->sg_state != SVCPOOL_CLOSING) { in svc_exit()
1432 grp->sg_state = SVCPOOL_CLOSING; in svc_exit()
1433 LIST_FOREACH(st, &grp->sg_idlethreads, st_ilink) in svc_exit()
1436 mtx_unlock(&grp->sg_lock); in svc_exit()