Lines Matching defs:p_pool

58 void cl_qcpool_construct(IN cl_qcpool_t * const p_pool)
60 CL_ASSERT(p_pool);
62 memset(p_pool, 0, sizeof(cl_qcpool_t));
64 p_pool->state = CL_UNINITIALIZED;
68 cl_qcpool_init(IN cl_qcpool_t * const p_pool,
81 CL_ASSERT(p_pool);
93 cl_qcpool_construct(p_pool);
105 p_pool->component_sizes = (size_t *) malloc((sizeof(size_t) +
109 if (!p_pool->component_sizes)
112 memset(p_pool->component_sizes, 0,
116 p_pool->p_components =
117 (void **)(p_pool->component_sizes + num_components);
120 memcpy(p_pool->component_sizes, component_sizes,
124 p_pool->num_components = num_components;
132 p_pool->component_sizes[i] =
133 ROUNDUP(p_pool->component_sizes[i], sizeof(uintn_t));
136 p_pool->max_objects = max_size ? max_size : ~(size_t) 0;
137 p_pool->grow_size = grow_size;
140 p_pool->pfn_init = pfn_initializer; /* may be NULL */
141 p_pool->pfn_dtor = pfn_destructor; /* may be NULL */
142 p_pool->context = context;
144 cl_qlist_init(&p_pool->alloc_list);
146 cl_qlist_init(&p_pool->free_list);
152 p_pool->state = CL_INITIALIZED;
158 status = cl_qcpool_grow(p_pool, min_size);
161 cl_qcpool_destroy(p_pool);
166 void cl_qcpool_destroy(IN cl_qcpool_t * const p_pool)
169 CL_ASSERT(p_pool);
171 CL_ASSERT(cl_is_state_valid(p_pool->state));
173 if (p_pool->state == CL_INITIALIZED) {
182 CL_ASSERT(cl_qcpool_count(p_pool) == p_pool->num_objects);
185 if (p_pool->pfn_dtor) {
186 while (!cl_is_qlist_empty(&p_pool->free_list)) {
187 p_pool->pfn_dtor((cl_pool_item_t *)
188 cl_qlist_remove_head(&p_pool->
190 (void *)p_pool->context);
193 cl_qlist_remove_all(&p_pool->free_list);
197 while (!cl_is_qlist_empty(&p_pool->alloc_list))
198 free(cl_qlist_remove_head(&p_pool->alloc_list));
200 if (p_pool->component_sizes) {
201 free(p_pool->component_sizes);
202 p_pool->component_sizes = NULL;
206 p_pool->state = CL_UNINITIALIZED;
209 cl_status_t cl_qcpool_grow(IN cl_qcpool_t * const p_pool, IN size_t obj_count)
217 CL_ASSERT(p_pool);
218 CL_ASSERT(p_pool->state == CL_INITIALIZED);
222 if (p_pool->num_objects == p_pool->max_objects)
226 if (obj_count > (p_pool->max_objects - p_pool->num_objects))
227 obj_count = p_pool->max_objects - p_pool->num_objects;
231 for (i = 0; i < p_pool->num_components; i++)
232 obj_size += p_pool->component_sizes[i];
246 cl_qlist_insert_tail(&p_pool->alloc_list, (cl_list_item_t *) p_objects);
252 p_pool->p_components[0] = p_objects;
253 for (i = 1; i < p_pool->num_components; i++) {
255 p_pool->p_components[i] =
256 (uint8_t *) p_pool->p_components[i - 1] +
257 p_pool->component_sizes[i - 1];
264 if (p_pool->pfn_init) {
266 status = p_pool->pfn_init(p_pool->p_components,
267 p_pool->num_components,
268 (void *)p_pool->context,
277 if (p_pool->pfn_dtor)
278 p_pool->pfn_dtor(p_pool_item,
279 (void *)p_pool->
292 (cl_pool_item_t *) p_pool->p_components[0];
300 p_pool_item->p_pool = p_pool;
304 cl_qlist_insert_head(&p_pool->free_list,
307 p_pool->num_objects++;
316 cl_pool_item_t *cl_qcpool_get(IN cl_qcpool_t * const p_pool)
320 CL_ASSERT(p_pool);
321 CL_ASSERT(p_pool->state == CL_INITIALIZED);
323 if (cl_is_qlist_empty(&p_pool->free_list)) {
328 if (!p_pool->grow_size)
332 cl_qcpool_grow(p_pool, p_pool->grow_size);
337 if (cl_is_qlist_empty(&p_pool->free_list))
341 p_list_item = cl_qlist_remove_head(&p_pool->free_list);
343 CL_ASSERT(p_list_item != cl_qlist_end(&p_pool->free_list));
347 cl_pool_item_t *cl_qcpool_get_tail(IN cl_qcpool_t * const p_pool)
351 CL_ASSERT(p_pool);
352 CL_ASSERT(p_pool->state == CL_INITIALIZED);
354 if (cl_is_qlist_empty(&p_pool->free_list)) {
359 if (!p_pool->grow_size)
363 cl_qcpool_grow(p_pool, p_pool->grow_size);
368 if (cl_is_qlist_empty(&p_pool->free_list))
372 p_list_item = cl_qlist_remove_tail(&p_pool->free_list);
374 CL_ASSERT(p_list_item != cl_qlist_end(&p_pool->free_list));
392 cl_qpool_t *p_pool = (cl_qpool_t *) context;
394 CL_ASSERT(p_pool);
395 CL_ASSERT(p_pool->pfn_init);
400 return (p_pool->pfn_init(p_comp_array[0], (void *)p_pool->context,
412 cl_qpool_t *p_pool = (cl_qpool_t *) context;
414 CL_ASSERT(p_pool);
415 CL_ASSERT(p_pool->pfn_dtor);
417 p_pool->pfn_dtor(p_pool_item, (void *)p_pool->context);
420 void cl_qpool_construct(IN cl_qpool_t * const p_pool)
422 memset(p_pool, 0, sizeof(cl_qpool_t));
424 cl_qcpool_construct(&p_pool->qcpool);
428 cl_qpool_init(IN cl_qpool_t * const p_pool,
439 CL_ASSERT(p_pool);
441 p_pool->pfn_init = pfn_initializer; /* may be NULL */
442 p_pool->pfn_dtor = pfn_destructor; /* may be NULL */
443 p_pool->context = context;
445 status = cl_qcpool_init(&p_pool->qcpool, min_size, max_size, grow_size,
449 p_pool);
468 cl_cpool_t *p_pool = (cl_cpool_t *) context;
472 CL_ASSERT(p_pool);
492 if (p_pool->pfn_init) {
493 status = p_pool->pfn_init(p_comp_array, num_components,
494 (void *)p_pool->context);
508 cl_cpool_t *p_pool = (cl_cpool_t *) context;
510 CL_ASSERT(p_pool);
511 CL_ASSERT(p_pool->pfn_dtor);
515 p_pool->pfn_dtor((void *)((cl_pool_obj_t *) p_pool_item)->p_object,
516 (void *)p_pool->context);
519 void cl_cpool_construct(IN cl_cpool_t * const p_pool)
521 CL_ASSERT(p_pool);
523 memset(p_pool, 0, sizeof(cl_cpool_t));
525 cl_qcpool_construct(&p_pool->qcpool);
529 cl_cpool_init(IN cl_cpool_t * const p_pool,
541 CL_ASSERT(p_pool);
549 p_pool->pfn_init = pfn_initializer; /* may be NULL */
550 p_pool->pfn_dtor = pfn_destructor; /* may be NULL */
551 p_pool->context = context;
553 status = cl_qcpool_init(&p_pool->qcpool, min_size, max_size, grow_size,
557 p_pool);
578 cl_pool_t *p_pool = (cl_pool_t *) context;
582 CL_ASSERT(p_pool);
605 if (p_pool->pfn_init)
606 status = p_pool->pfn_init(*pp_obj, (void *)p_pool->context);
618 cl_pool_t *p_pool = (cl_pool_t *) context;
620 CL_ASSERT(p_pool);
621 CL_ASSERT(p_pool->pfn_dtor);
625 p_pool->pfn_dtor((void *)((cl_pool_obj_t *) p_pool_item)->p_object,
626 (void *)p_pool->context);
629 void cl_pool_construct(IN cl_pool_t * const p_pool)
631 CL_ASSERT(p_pool);
633 memset(p_pool, 0, sizeof(cl_pool_t));
635 cl_qcpool_construct(&p_pool->qcpool);
639 cl_pool_init(IN cl_pool_t * const p_pool,
651 CL_ASSERT(p_pool);
657 p_pool->pfn_init = pfn_initializer; /* may be NULL */
658 p_pool->pfn_dtor = pfn_destructor; /* may be NULL */
659 p_pool->context = context;
665 status = cl_qcpool_init(&p_pool->qcpool, min_size, max_size, grow_size,
668 p_pool);