Lines Matching refs:parent

75 slab_get_element(struct slab_parent_pool *parent,
79 ((uint8_t*)&page[1] + (parent->element_size * index));
99 * Create a parent pool for the allocation of same-sized objects.
105 slab_create_parent(struct slab_parent_pool *parent,
109 simple_mtx_init(&parent->mutex, mtx_plain);
110 parent->element_size = ALIGN_POT(sizeof(struct slab_element_header) + item_size,
112 parent->num_elements = num_items;
113 parent->item_size = item_size;
117 slab_destroy_parent(struct slab_parent_pool *parent)
119 simple_mtx_destroy(&parent->mutex);
123 * Create a child pool linked to the given parent.
126 struct slab_parent_pool *parent)
128 pool->parent = parent;
142 if (!pool->parent)
145 simple_mtx_lock(&pool->parent->mutex);
150 p_atomic_set(&page->u.num_remaining, pool->parent->num_elements);
152 for (unsigned i = 0; i < pool->parent->num_elements; ++i) {
153 struct slab_element_header *elt = slab_get_element(pool->parent, page, i);
164 simple_mtx_unlock(&pool->parent->mutex);
173 pool->parent = NULL;
180 pool->parent->num_elements * pool->parent->element_size);
185 for (unsigned i = 0; i < pool->parent->num_elements; ++i) {
186 struct slab_element_header *elt = slab_get_element(pool->parent, page, i);
215 simple_mtx_lock(&pool->parent->mutex);
218 simple_mtx_unlock(&pool->parent->mutex);
242 memset(r, 0, pool->parent->item_size);
252 * allocated is allowed, as long the pool belong to the same parent. No
273 if (pool->parent)
274 simple_mtx_lock(&pool->parent->mutex);
285 if (pool->parent)
286 simple_mtx_unlock(&pool->parent->mutex);
288 if (pool->parent)
289 simple_mtx_unlock(&pool->parent->mutex);
317 slab_destroy_parent(&mempool->parent);
331 slab_create_parent(&mempool->parent, item_size, num_items);
332 slab_create_child(&mempool->child, &mempool->parent);