/** * \brief Destroys a task. * * The user data (if any) should have been destroyed first. * * \param task the task you want to destroy * \see SD_task_create() */ void SD_task_destroy(SD_task_t task) { XBT_DEBUG("Destroying task %s...", SD_task_get_name(task)); /* First Remove all dependencies associated with the task. */ while (!task->predecessors->empty()) SD_task_dependency_remove(*(task->predecessors->begin()), task); while (!task->inputs->empty()) SD_task_dependency_remove(*(task->inputs->begin()), task); while (!task->successors->empty()) SD_task_dependency_remove(task, *(task->successors->begin())); while (!task->outputs->empty()) SD_task_dependency_remove(task, *(task->outputs->begin())); if (task->state == SD_SCHEDULED || task->state == SD_RUNNABLE) __SD_task_destroy_scheduling_data(task); int idx = xbt_dynar_search_or_negative(sd_global->return_set, &task); if (idx >=0) { xbt_dynar_remove_at(sd_global->return_set, idx, nullptr); } xbt_free(task->name); if (task->surf_action != nullptr) task->surf_action->unref(); xbt_free(task->host_list); xbt_free(task->bytes_amount); xbt_free(task->flops_amount); xbt_mallocator_release(sd_global->task_mallocator,task); XBT_DEBUG("Task destroyed."); }
void SIMIX_synchro_destroy(smx_action_t action) { XBT_IN("(%p)",action); XBT_DEBUG("Destroying synchro %p", action); action->synchro.sleep->model_type->action_unref(action->synchro.sleep); xbt_free(action->name); xbt_mallocator_release(simix_global->action_mallocator, action); XBT_OUT(); }
void SIMIX_synchro_destroy(smx_synchro_t synchro) { XBT_IN("(%p)",synchro); XBT_DEBUG("Destroying synchro %p", synchro); xbt_assert(synchro->type == SIMIX_SYNC_SYNCHRO); surf_action_unref(synchro->synchro.sleep); xbt_free(synchro->name); xbt_mallocator_release(simix_global->synchro_mallocator, synchro); XBT_OUT(); }
static void lmm_var_free(lmm_system_t sys, lmm_variable_t var) { lmm_variable_remove(sys, var); xbt_mallocator_release(sys->variable_mallocator, var); }
XBT_INLINE void surf_action_free(surf_action_t * action) { xbt_mallocator_release(action_mallocator, *action); *action = NULL; }