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++;
{
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);