X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5e8daaa6e9f74521068aa75837200bcd182ea6..0de7df8a3bc351fdff4c4a3e106608b15c842143:/src/simdag/sd_task.c diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 47c41c3129..6ef31d43df 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -8,7 +8,7 @@ #include "simdag/simdag.h" #include "xbt/sysdep.h" #include "xbt/dynar.h" -#include "instr/private.h" +#include "instr/instr_private.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_task, sd, "Logging specific to SimDag (task)"); @@ -41,6 +41,7 @@ SD_task_t SD_task_create(const char *name, void *data, double amount) task->state_hookup.next = NULL; task->state_set = sd_global->not_scheduled_task_set; task->state = SD_NOT_SCHEDULED; + task->marked = 0; xbt_swag_insert(task, task->state_set); task->amount = amount; @@ -61,7 +62,7 @@ SD_task_t SD_task_create(const char *name, void *data, double amount) task->workstation_list = NULL; task->computation_amount = NULL; task->communication_amount = NULL; - task->rate = 0; + task->rate = -1; sd_global->task_number++; @@ -149,6 +150,9 @@ void __SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state) task->finish_time = surf_workstation_model->action_get_finish_time(task->surf_action); task->remains = 0; +#ifdef HAVE_JEDULE + jedule_log_sd_event(task); +#endif break; case SD_FAILED: task->state_set = sd_global->failed_task_set; @@ -756,30 +760,36 @@ void SD_task_schedule(SD_task_t task, int workstation_count, { int communication_nb; task->workstation_nb = 0; - task->rate = 0; + task->rate = -1; xbt_assert0(workstation_count > 0, "workstation_nb must be positive"); task->workstation_nb = workstation_count; task->rate = rate; if (computation_amount) { - task->computation_amount = xbt_new(double, workstation_count); + task->computation_amount = xbt_realloc(task->computation_amount, + sizeof(double) * workstation_count); memcpy(task->computation_amount, computation_amount, sizeof(double) * workstation_count); } else { + xbt_free(task->computation_amount); task->computation_amount = NULL; } communication_nb = workstation_count * workstation_count; if (communication_amount) { - task->communication_amount = xbt_new(double, communication_nb); + task->communication_amount = xbt_realloc(task->communication_amount, + sizeof(double) * communication_nb); memcpy(task->communication_amount, communication_amount, sizeof(double) * communication_nb); } else { + xbt_free(task->communication_amount); task->communication_amount = NULL; } - task->workstation_list = xbt_new(SD_workstation_t, workstation_count); + task->workstation_list = + xbt_realloc(task->workstation_list, + sizeof(SD_workstation_t) * workstation_count); memcpy(task->workstation_list, workstation_list, sizeof(SD_workstation_t) * workstation_count);