#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)");
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;
task->workstation_list = NULL;
task->computation_amount = NULL;
task->communication_amount = NULL;
- task->rate = 0;
+ task->rate = -1;
sd_global->task_number++;
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;
{
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);