Example #1
0
/**
 * \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.");
}
Example #2
0
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();
}
Example #3
0
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();
}
Example #4
0
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);
}
Example #5
0
XBT_INLINE void surf_action_free(surf_action_t * action)
{
  xbt_mallocator_release(action_mallocator, *action);
  *action = NULL;
}