}
INFO0("------------------- Run the schedule ---------------------------");
- SD_simulate(-1);
+ SD_task_t *changed = SD_simulate(-1);
+ free(changed);
INFO0("------------------- Produce the trace file---------------------------");
INFO1("Producing the trace of the run into %s",tracefilename);
FILE*out = fopen(tracefilename,"w");
default:
xbt_die(bprintf("Task %s is of unknown kind %d",SD_task_get_name(task),SD_task_get_kind(task)));
}
+ SD_task_destroy(task);
}
fclose(out);
void SD_task_dotty(SD_task_t task,void* out) {
unsigned int counter;
SD_dependency_t dependency;
- fprintf(out, " T%ld [label=\"%.20s\"",(unsigned long int)task, task->name);
+ fprintf(out, " T%p [label=\"%.20s\"",task, task->name);
switch(task->kind){
case SD_TASK_COMM_E2E:
fprintf(out,", shape=box");
case SD_TASK_COMP_SEQ:
fprintf(out,", shape=circle");
break;
+ default:
+ xbt_die("Unknown task type!");
}
fprintf(out,"];\n");
xbt_dynar_foreach(task->tasks_before,counter,dependency) {
xbt_free(task->computation_amount);
xbt_free(task->communication_amount);
+ task->computation_amount = task->communication_amount = NULL;
}
/* Runs a task. This function is directly called by __SD_task_try_to_run if the task
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);
+
xbt_dynar_free(&task->tasks_before);
xbt_dynar_free(&task->tasks_after);
xbt_free(task);