-/**
- * \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)
-{
- SD_CHECK_INIT_DONE();
- xbt_assert0(task != NULL, "Invalid parameter");
-
- XBT_DEBUG("Destroying task %s...", SD_task_get_name(task));
-
- __SD_task_remove_dependencies(task);
- /* if the task was scheduled or runnable we have to free the scheduling parameters */
- if (__SD_task_is_scheduled_or_runnable(task))
- __SD_task_destroy_scheduling_data(task);
- xbt_swag_remove(task, task->state_set);
-
- if (task->name != NULL)
- xbt_free(task->name);
-
- if (task->surf_action != NULL)
- surf_workstation_model->action_unref(task->surf_action);
-
- if (task->workstation_list != NULL)
- xbt_free(task->workstation_list);
-
- if (task->communication_amount)
- xbt_free(task->communication_amount);
-
- if (task->computation_amount)
- xbt_free(task->computation_amount);
-
-#ifdef HAVE_TRACING
- TRACE_sd_task_destroy(task);
-#endif
-
- xbt_dynar_free(&task->tasks_before);
- xbt_dynar_free(&task->tasks_after);
- xbt_free(task);
-
- sd_global->task_number--;
-
- XBT_DEBUG("Task destroyed.");
-}
-
-