Lines Matching refs:pool

44 	isc_taskpool_t *pool;  in alloc_pool()  local
47 pool = isc_mem_get(mctx, sizeof(*pool)); in alloc_pool()
49 pool->mctx = NULL; in alloc_pool()
50 isc_mem_attach(mctx, &pool->mctx); in alloc_pool()
51 pool->ntasks = ntasks; in alloc_pool()
52 pool->quantum = quantum; in alloc_pool()
53 pool->tmgr = tmgr; in alloc_pool()
54 pool->tasks = isc_mem_get(mctx, ntasks * sizeof(isc_task_t *)); in alloc_pool()
56 pool->tasks[i] = NULL; in alloc_pool()
59 *poolp = pool; in alloc_pool()
66 isc_taskpool_t *pool = NULL; in isc_taskpool_create() local
71 alloc_pool(tmgr, mctx, ntasks, quantum, &pool); in isc_taskpool_create()
76 &pool->tasks[i], i); in isc_taskpool_create()
78 isc_taskpool_destroy(&pool); in isc_taskpool_create()
81 isc_task_setprivilege(pool->tasks[i], priv); in isc_taskpool_create()
82 isc_task_setname(pool->tasks[i], "taskpool", NULL); in isc_taskpool_create()
85 *poolp = pool; in isc_taskpool_create()
90 isc_taskpool_gettask(isc_taskpool_t *pool, isc_task_t **targetp) { in isc_taskpool_gettask() argument
91 isc_task_attach(pool->tasks[isc_random_uniform(pool->ntasks)], targetp); in isc_taskpool_gettask()
95 isc_taskpool_size(isc_taskpool_t *pool) { in isc_taskpool_size() argument
96 REQUIRE(pool != NULL); in isc_taskpool_size()
97 return (pool->ntasks); in isc_taskpool_size()
103 isc_taskpool_t *pool; in isc_taskpool_expand() local
108 pool = *sourcep; in isc_taskpool_expand()
110 if (size > pool->ntasks) { in isc_taskpool_expand()
115 alloc_pool(pool->tmgr, pool->mctx, size, pool->quantum, in isc_taskpool_expand()
119 for (i = 0; i < pool->ntasks; i++) { in isc_taskpool_expand()
120 newpool->tasks[i] = pool->tasks[i]; in isc_taskpool_expand()
121 pool->tasks[i] = NULL; in isc_taskpool_expand()
125 for (i = pool->ntasks; i < size; i++) { in isc_taskpool_expand()
127 isc_task_create_bound(pool->tmgr, pool->quantum, in isc_taskpool_expand()
130 *sourcep = pool; in isc_taskpool_expand()
138 isc_taskpool_destroy(&pool); in isc_taskpool_expand()
139 pool = newpool; in isc_taskpool_expand()
142 *targetp = pool; in isc_taskpool_expand()
149 isc_taskpool_t *pool = *poolp; in isc_taskpool_destroy() local
151 for (i = 0; i < pool->ntasks; i++) { in isc_taskpool_destroy()
152 if (pool->tasks[i] != NULL) { in isc_taskpool_destroy()
153 isc_task_detach(&pool->tasks[i]); in isc_taskpool_destroy()
156 isc_mem_put(pool->mctx, pool->tasks, in isc_taskpool_destroy()
157 pool->ntasks * sizeof(isc_task_t *)); in isc_taskpool_destroy()
158 isc_mem_putanddetach(&pool->mctx, pool, sizeof(*pool)); in isc_taskpool_destroy()