Lines Matching defs:elem

16 	void (*cleanup)(struct rxe_pool_elem *elem);
24 .elem_offset = offsetof(struct rxe_ucontext, elem),
32 .elem_offset = offsetof(struct rxe_pd, elem),
40 .elem_offset = offsetof(struct rxe_ah, elem),
48 .elem_offset = offsetof(struct rxe_srq, elem),
57 .elem_offset = offsetof(struct rxe_qp, elem),
66 .elem_offset = offsetof(struct rxe_cq, elem),
75 .elem_offset = offsetof(struct rxe_mr, elem),
84 .elem_offset = offsetof(struct rxe_mw, elem),
119 int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem,
128 elem->pool = pool;
129 elem->obj = (u8 *)elem - pool->elem_offset;
130 kref_init(&elem->ref_cnt);
131 init_completion(&elem->complete);
141 err = xa_alloc_cyclic(&pool->xa, &elem->index, NULL, pool->limit,
155 struct rxe_pool_elem *elem;
160 elem = xa_load(xa, index);
161 if (elem && kref_get_unless_zero(&elem->ref_cnt))
162 obj = elem->obj;
172 struct rxe_pool_elem *elem = container_of(kref, typeof(*elem), ref_cnt);
174 complete(&elem->complete);
177 int __rxe_cleanup(struct rxe_pool_elem *elem, bool sleepable)
179 struct rxe_pool *pool = elem->pool;
189 * the pool elem from its index
191 xa_ret = xa_erase(xa, elem->index);
195 * object. It is safe to touch obj->elem after this since
198 __rxe_put(elem);
205 if (!completion_done(&elem->complete) && timeout) {
206 ret = wait_for_completion_timeout(&elem->complete,
224 while (!completion_done(&elem->complete) &&
228 if (WARN_ON(!completion_done(&elem->complete)))
233 pool->cleanup(elem);
240 int __rxe_get(struct rxe_pool_elem *elem)
242 return kref_get_unless_zero(&elem->ref_cnt);
245 int __rxe_put(struct rxe_pool_elem *elem)
247 return kref_put(&elem->ref_cnt, rxe_elem_release);
250 void __rxe_finalize(struct rxe_pool_elem *elem)
254 xa_ret = xa_store(&elem->pool->xa, elem->index, elem, GFP_KERNEL);