void smpi_shared_free(void *ptr) { char loc[PTR_STRLEN]; shared_metadata_t* meta; shared_data_t* data; if (!allocs) { XBT_WARN("Cannot free: nothing was allocated"); return; } if(!allocs_metadata) { XBT_WARN("Cannot free: no metadata was allocated"); } snprintf(loc, PTR_STRLEN, "%p", ptr); meta = (shared_metadata_t*)xbt_dict_get_or_null(allocs_metadata, loc); if (!meta) { XBT_WARN("Cannot free: %p was not shared-allocated by SMPI", ptr); return; } data = meta->data; if(!data) { XBT_WARN("Cannot free: something is broken in the metadata link"); return; } if(munmap(ptr, meta->size) < 0) { XBT_WARN("Unmapping of fd %d failed: %s", data->fd, strerror(errno)); } data->count--; if (data->count <= 0) { close(data->fd); xbt_dict_remove(allocs, data->loc); free(data->loc); } }
void print_TIDestroyContainer(paje_event_t event) { if (!xbt_cfg_get_boolean("tracing/smpi/format/ti-one-file")|| xbt_dict_length(tracing_files) == 1) { FILE* f = (FILE*)xbt_dict_get_or_null(tracing_files, ((destroyContainer_t) event->data)->container->name); fclose(f); } xbt_dict_remove(tracing_files, ((destroyContainer_t) event->data)->container->name); }
void TRACE_internal_smpi_set_category (const char *category) { if (!TRACE_smpi_is_enabled()) return; //declare category TRACE_category (category); char processid[INSTR_DEFAULT_STR_SIZE]; snprintf (processid, INSTR_DEFAULT_STR_SIZE, "%p", SIMIX_process_self()); if (xbt_dict_get_or_null (process_category, processid)) xbt_dict_remove (process_category, processid); if (category != NULL) xbt_dict_set (process_category, processid, xbt_strdup(category), NULL); }
void smpi_shared_free(void *ptr) { shared_data_t *data = (shared_data_t *) ((int *) ptr - 1); char *loc; if (!allocs) { XBT_WARN("Cannot free: nothing was allocated"); return; } loc = xbt_dict_get_key(allocs, data); if (!loc) { XBT_WARN("Cannot free: %p was not shared-allocated by SMPI", ptr); return; } data->count--; if (data->count <= 0) { xbt_dict_remove(allocs, loc); } }
void NetworkSmpiModel::gapRemove(Action *lmm_action) { xbt_fifo_t fifo; size_t size; NetworkCm02Action *action = static_cast<NetworkCm02Action*>(lmm_action); if (sg_sender_gap > 0.0 && action->senderLinkName_ && action->senderFifoItem_) { fifo = (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup, action->senderLinkName_); xbt_fifo_remove_item(fifo, action->senderFifoItem_); size = xbt_fifo_size(fifo); if (size == 0) { xbt_fifo_free(fifo); xbt_dict_remove(gap_lookup, action->senderLinkName_); size = xbt_dict_length(gap_lookup); if (size == 0) { xbt_dict_free(&gap_lookup); } } } }
/** \ingroup XBT_replay * \brief Unregisters a function, which handled a kind of action * * \param action_name the reference name of the action. */ void xbt_replay_action_unregister(const char *action_name) { char* lowername = str_tolower (action_name); xbt_dict_remove(xbt_action_funs, lowername); xbt_free(lowername); }