Lines Matching refs:grp

74 static void svc_new_thread(SVCGROUP *grp);
90 SVCGROUP *grp;
105 grp = &pool->sp_groups[g];
106 mtx_init(&grp->sg_lock, "sg_lock", NULL, MTX_DEF);
107 grp->sg_pool = pool;
108 grp->sg_state = SVCPOOL_ACTIVE;
109 TAILQ_INIT(&grp->sg_xlist);
110 TAILQ_INIT(&grp->sg_active);
111 LIST_INIT(&grp->sg_idlethreads);
112 grp->sg_minthreads = 1;
113 grp->sg_maxthreads = 1;
185 SVCGROUP *grp;
195 grp = &pool->sp_groups[g];
196 mtx_lock(&grp->sg_lock);
197 while ((xprt = TAILQ_FIRST(&grp->sg_xlist)) != NULL) {
201 mtx_unlock(&grp->sg_lock);
224 SVCGROUP *grp;
230 grp = &pool->sp_groups[g];
231 mtx_destroy(&grp->sg_lock);
249 SVCGROUP *grp;
259 grp = &pool->sp_groups[g];
260 mtx_lock(&grp->sg_lock);
261 grp->sg_state = SVCPOOL_ACTIVE;
262 mtx_unlock(&grp->sg_lock);
344 SVCGROUP *grp;
349 xprt->xp_group = grp = &pool->sp_groups[g];
350 mtx_lock(&grp->sg_lock);
353 TAILQ_INSERT_TAIL(&grp->sg_xlist, xprt, xp_link);
354 mtx_unlock(&grp->sg_lock);
365 SVCGROUP *grp = xprt->xp_group;
367 mtx_assert(&grp->sg_lock, MA_OWNED);
371 TAILQ_REMOVE(&grp->sg_xlist, xprt, xp_link);
378 SVCGROUP *grp = xprt->xp_group;
380 mtx_lock(&grp->sg_lock);
383 mtx_unlock(&grp->sg_lock);
387 mtx_unlock(&grp->sg_lock);
398 SVCGROUP *grp = xprt->xp_group;
401 mtx_assert(&grp->sg_lock, MA_OWNED);
402 st = LIST_FIRST(&grp->sg_idlethreads);
419 if (grp->sg_state == SVCPOOL_ACTIVE
420 && grp->sg_lastcreatetime < time_uptime
421 && grp->sg_threadcount < grp->sg_maxthreads) {
422 grp->sg_state = SVCPOOL_THREADWANTED;
431 SVCGROUP *grp = xprt->xp_group;
433 mtx_lock(&grp->sg_lock);
439 mtx_unlock(&grp->sg_lock);
448 TAILQ_INSERT_TAIL(&grp->sg_active, xprt,
453 mtx_unlock(&grp->sg_lock);
459 SVCGROUP *grp = xprt->xp_group;
461 mtx_assert(&grp->sg_lock, MA_OWNED);
464 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
472 SVCGROUP *grp = xprt->xp_group;
474 mtx_lock(&grp->sg_lock);
476 mtx_unlock(&grp->sg_lock);
1053 svc_checkidle(SVCGROUP *grp)
1060 TAILQ_FOREACH_SAFE(xprt, &grp->sg_xlist, xp_link, nxprt) {
1075 mtx_unlock(&grp->sg_lock);
1079 mtx_lock(&grp->sg_lock);
1085 SVCGROUP *grp;
1090 grp = &pool->sp_groups[g];
1091 mtx_lock(&grp->sg_lock);
1092 while ((xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) {
1094 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
1098 mtx_unlock(&grp->sg_lock);
1133 svc_run_internal(SVCGROUP *grp, bool_t ismaster)
1135 SVCPOOL *pool = grp->sg_pool;
1151 mtx_lock(&grp->sg_lock);
1157 if (grp->sg_state == SVCPOOL_THREADSTARTING)
1158 grp->sg_state = SVCPOOL_ACTIVE;
1160 while (grp->sg_state != SVCPOOL_CLOSING) {
1164 if (grp->sg_state == SVCPOOL_THREADWANTED) {
1165 grp->sg_state = SVCPOOL_THREADSTARTING;
1166 grp->sg_lastcreatetime = time_uptime;
1167 mtx_unlock(&grp->sg_lock);
1168 svc_new_thread(grp);
1169 mtx_lock(&grp->sg_lock);
1176 if (time_uptime > grp->sg_lastidlecheck) {
1177 grp->sg_lastidlecheck = time_uptime;
1178 svc_checkidle(grp);
1186 if (!ismaster && grp->sg_threadcount >
1187 grp->sg_maxthreads)
1196 (xprt = TAILQ_FIRST(&grp->sg_active)) != NULL) {
1197 TAILQ_REMOVE(&grp->sg_active, xprt, xp_alink);
1204 LIST_INSERT_HEAD(&grp->sg_idlethreads, st, st_ilink);
1206 grp->sg_threadcount > grp->sg_minthreads))
1208 &grp->sg_lock, 5 * hz);
1211 &grp->sg_lock);
1220 && (grp->sg_threadcount
1221 > grp->sg_minthreads)
1227 mtx_unlock(&grp->sg_lock);
1234 mtx_lock(&grp->sg_lock);
1238 mtx_lock(&grp->sg_lock);
1244 mtx_unlock(&grp->sg_lock);
1276 && grp->sg_state != SVCPOOL_CLOSING);
1284 mtx_lock(&grp->sg_lock);
1290 TAILQ_INSERT_TAIL(&grp->sg_active,
1293 mtx_unlock(&grp->sg_lock);
1309 mtx_lock(&grp->sg_lock);
1322 grp->sg_threadcount--;
1324 wakeup(grp);
1325 mtx_unlock(&grp->sg_lock);
1337 svc_new_thread(SVCGROUP *grp)
1339 SVCPOOL *pool = grp->sg_pool;
1342 mtx_lock(&grp->sg_lock);
1343 grp->sg_threadcount++;
1344 mtx_unlock(&grp->sg_lock);
1345 kthread_add(svc_thread_start, grp, pool->sp_proc, &td, 0, 0,
1355 SVCGROUP *grp;
1368 grp = &pool->sp_groups[g];
1369 grp->sg_minthreads = max(1,
1371 grp->sg_maxthreads = max(1,
1373 grp->sg_lastcreatetime = time_uptime;
1379 grp = &pool->sp_groups[g];
1380 for (i = ((g == 0) ? 1 : 0); i < grp->sg_minthreads; i++)
1381 svc_new_thread(grp);
1387 grp = &pool->sp_groups[g];
1388 mtx_lock(&grp->sg_lock);
1389 while (grp->sg_threadcount > 0)
1390 msleep(grp, &grp->sg_lock, 0, "svcexit", 0);
1391 mtx_unlock(&grp->sg_lock);
1398 SVCGROUP *grp;
1404 grp = &pool->sp_groups[g];
1405 mtx_lock(&grp->sg_lock);
1406 if (grp->sg_state != SVCPOOL_CLOSING) {
1407 grp->sg_state = SVCPOOL_CLOSING;
1408 LIST_FOREACH(st, &grp->sg_idlethreads, st_ilink)
1411 mtx_unlock(&grp->sg_lock);