flist 115 opal/class/opal_free_list.c int opal_free_list_init (opal_free_list_t *flist, size_t frag_size, size_t frag_alignment, flist 137 opal/class/opal_free_list.c if (frag_size > flist->fl_frag_size) { flist 138 opal/class/opal_free_list.c flist->fl_frag_size = frag_size; flist 142 opal/class/opal_free_list.c flist->fl_frag_class = frag_class; flist 145 opal/class/opal_free_list.c flist->fl_payload_buffer_size = payload_buffer_size; flist 146 opal/class/opal_free_list.c flist->fl_max_to_alloc = max_elements_to_alloc; flist 147 opal/class/opal_free_list.c flist->fl_num_allocated = 0; flist 148 opal/class/opal_free_list.c flist->fl_num_per_alloc = num_elements_per_alloc; flist 149 opal/class/opal_free_list.c flist->fl_mpool = mpool ? mpool : mca_mpool_base_default_module; flist 150 opal/class/opal_free_list.c flist->fl_rcache = rcache; flist 151 opal/class/opal_free_list.c flist->fl_frag_alignment = frag_alignment; flist 152 opal/class/opal_free_list.c flist->fl_payload_buffer_alignment = payload_buffer_alignment; flist 153 opal/class/opal_free_list.c flist->item_init = item_init; flist 154 opal/class/opal_free_list.c flist->fl_rcache_reg_flags |= rcache_reg_flags; flist 155 opal/class/opal_free_list.c flist->ctx = ctx; flist 158 opal/class/opal_free_list.c return opal_free_list_grow_st (flist, num_elements_to_alloc, NULL); flist 164 opal/class/opal_free_list.c int opal_free_list_grow_st (opal_free_list_t* flist, size_t num_elements, opal_free_list_item_t **item_out) flist 172 opal/class/opal_free_list.c if (flist->fl_max_to_alloc && (flist->fl_num_allocated + num_elements) > flist 173 opal/class/opal_free_list.c flist->fl_max_to_alloc) { flist 174 opal/class/opal_free_list.c num_elements = flist->fl_max_to_alloc - flist->fl_num_allocated; flist 181 opal/class/opal_free_list.c head_size = OPAL_ALIGN(flist->fl_frag_size, flist->fl_frag_alignment, size_t); flist 184 opal/class/opal_free_list.c if (0 != flist->fl_payload_buffer_size) { flist 185 opal/class/opal_free_list.c elem_size = OPAL_ALIGN(flist->fl_payload_buffer_size, flist 186 opal/class/opal_free_list.c flist->fl_payload_buffer_alignment, size_t); flist 192 opal/class/opal_free_list.c align = flist->fl_payload_buffer_alignment; flist 194 opal/class/opal_free_list.c if (MCA_RCACHE_FLAGS_CUDA_REGISTER_MEM & flist->fl_rcache_reg_flags) { flist 208 opal/class/opal_free_list.c flist->fl_frag_alignment; flist 215 opal/class/opal_free_list.c if (0 != flist->fl_payload_buffer_size) { flist 217 opal/class/opal_free_list.c payload_ptr = (unsigned char *) flist->fl_mpool->mpool_alloc(flist->fl_mpool, buffer_size, align, 0); flist 223 opal/class/opal_free_list.c if (flist->fl_rcache) { flist 224 opal/class/opal_free_list.c rc = flist->fl_rcache->rcache_register (flist->fl_rcache, payload_ptr, num_elements * elem_size, flist 225 opal/class/opal_free_list.c flist->fl_rcache_reg_flags, MCA_RCACHE_ACCESS_ANY, ®); flist 228 opal/class/opal_free_list.c flist->fl_mpool->mpool_free (flist->fl_mpool, payload_ptr); flist 238 opal/class/opal_free_list.c opal_list_append(&(flist->fl_allocations), (opal_list_item_t*)alloc_ptr); flist 244 opal/class/opal_free_list.c ptr = OPAL_ALIGN_PTR(ptr, flist->fl_frag_alignment, unsigned char*); flist 251 opal/class/opal_free_list.c OBJ_CONSTRUCT_INTERNAL(item, flist->fl_frag_class); flist 255 opal/class/opal_free_list.c if (flist->item_init) { flist 256 opal/class/opal_free_list.c if (OPAL_SUCCESS != (rc = flist->item_init(item, flist->ctx))) { flist 271 opal/class/opal_free_list.c opal_lifo_push_atomic (&flist->super, &item->super); flist 280 opal/class/opal_free_list.c opal_list_remove_item (&flist->fl_allocations, (opal_list_item_t *) alloc_ptr); flist 281 opal/class/opal_free_list.c opal_free_list_allocation_release (flist, alloc_ptr); flist 285 opal/class/opal_free_list.c flist->fl_num_allocated += num_elements; flist 296 opal/class/opal_free_list.c int opal_free_list_resize_mt(opal_free_list_t *flist, size_t size) flist 301 opal/class/opal_free_list.c if (flist->fl_num_allocated > size) { flist 305 opal/class/opal_free_list.c opal_mutex_lock (&flist->fl_lock); flist 307 opal/class/opal_free_list.c ret = opal_free_list_grow_st (flist, flist->fl_num_per_alloc, NULL); flist 312 opal/class/opal_free_list.c inc_num = (ssize_t)size - (ssize_t)flist->fl_num_allocated; flist 314 opal/class/opal_free_list.c opal_mutex_unlock (&flist->fl_lock); flist 166 opal/class/opal_free_list.h OPAL_DECLSPEC int opal_free_list_grow_st (opal_free_list_t *flist, size_t num_elements, opal_free_list_item_t **item_out); flist 182 opal/class/opal_free_list.h OPAL_DECLSPEC int opal_free_list_resize_mt (opal_free_list_t *flist, size_t size); flist 198 opal/class/opal_free_list.h static inline opal_free_list_item_t *opal_free_list_get_mt (opal_free_list_t *flist) flist 201 opal/class/opal_free_list.h (opal_free_list_item_t*) opal_lifo_pop_atomic (&flist->super); flist 204 opal/class/opal_free_list.h opal_mutex_lock (&flist->fl_lock); flist 205 opal/class/opal_free_list.h opal_free_list_grow_st (flist, flist->fl_num_per_alloc, &item); flist 206 opal/class/opal_free_list.h opal_mutex_unlock (&flist->fl_lock); flist 212 opal/class/opal_free_list.h static inline opal_free_list_item_t *opal_free_list_get_st (opal_free_list_t *flist) flist 215 opal/class/opal_free_list.h (opal_free_list_item_t*) opal_lifo_pop_st (&flist->super); flist 218 opal/class/opal_free_list.h opal_free_list_grow_st (flist, flist->fl_num_per_alloc, &item); flist 224 opal/class/opal_free_list.h static inline opal_free_list_item_t *opal_free_list_get (opal_free_list_t *flist) flist 227 opal/class/opal_free_list.h return opal_free_list_get_mt (flist); flist 230 opal/class/opal_free_list.h return opal_free_list_get_st (flist); flist 325 opal/class/opal_free_list.h static inline void opal_free_list_return_mt (opal_free_list_t *flist, flist 330 opal/class/opal_free_list.h original = opal_lifo_push_atomic (&flist->super, &item->super); flist 331 opal/class/opal_free_list.h if (&flist->super.opal_lifo_ghost == original) { flist 332 opal/class/opal_free_list.h if (flist->fl_num_waiting > 0) { flist 337 opal/class/opal_free_list.h opal_condition_signal (&flist->fl_condition); flist 342 opal/class/opal_free_list.h static inline void opal_free_list_return_st (opal_free_list_t *flist, flist 347 opal/class/opal_free_list.h original = opal_lifo_push_st (&flist->super, &item->super); flist 348 opal/class/opal_free_list.h if (&flist->super.opal_lifo_ghost == original) { flist 349 opal/class/opal_free_list.h if (flist->fl_num_waiting > 0) { flist 354 opal/class/opal_free_list.h opal_condition_signal (&flist->fl_condition); flist 359 opal/class/opal_free_list.h static inline void opal_free_list_return (opal_free_list_t *flist, flist 363 opal/class/opal_free_list.h opal_free_list_return_mt (flist, item); flist 365 opal/class/opal_free_list.h opal_free_list_return_st (flist, item);