Lines Matching defs:pool
92 void rxe_pool_init(struct rxe_dev *rxe, struct rxe_pool *pool,
97 memset(pool, 0, sizeof(*pool));
99 pool->rxe = rxe;
100 pool->name = info->name;
101 pool->type = type;
102 pool->max_elem = info->max_elem;
103 pool->elem_size = ALIGN(info->size, RXE_POOL_ALIGN);
104 pool->elem_offset = info->elem_offset;
105 pool->cleanup = info->cleanup;
107 atomic_set(&pool->num_elem, 0);
109 xa_init_flags(&pool->xa, XA_FLAGS_ALLOC);
110 pool->limit.min = info->min_index;
111 pool->limit.max = info->max_index;
114 void rxe_pool_cleanup(struct rxe_pool *pool)
116 WARN_ON(!xa_empty(&pool->xa));
119 int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem,
125 if (atomic_inc_return(&pool->num_elem) > pool->max_elem)
128 elem->pool = pool;
129 elem->obj = (u8 *)elem - pool->elem_offset;
141 err = xa_alloc_cyclic(&pool->xa, &elem->index, NULL, pool->limit,
142 &pool->next, gfp_flags);
149 atomic_dec(&pool->num_elem);
153 void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
156 struct xarray *xa = &pool->xa;
179 struct rxe_pool *pool = elem->pool;
180 struct xarray *xa = &pool->xa;
189 * the pool elem from its index
232 if (pool->cleanup)
233 pool->cleanup(elem);
235 atomic_dec(&pool->num_elem);
254 xa_ret = xa_store(&elem->pool->xa, elem->index, elem, GFP_KERNEL);