X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e1a94e1131e309dd8cf98bb4bf650f3b23d3c2d5..aeecccef59f268281e3c0423a535ccc4e001e491:/src/simdag/sd_task.c diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 1520ead82b..058e3bfb25 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -494,16 +494,16 @@ void SD_task_dump(SD_task_t task) XBT_INFO("Displaying task %s", SD_task_get_name(task)); statename = bprintf("%s %s %s %s %s %s %s %s", - (task->state & SD_NOT_SCHEDULED ? "not scheduled" : + (task->state == SD_NOT_SCHEDULED ? "not scheduled" : ""), - (task->state & SD_SCHEDULABLE ? "schedulable" : ""), - (task->state & SD_SCHEDULED ? "scheduled" : ""), - (task->state & SD_RUNNABLE ? "runnable" : + (task->state == SD_SCHEDULABLE ? "schedulable" : ""), + (task->state == SD_SCHEDULED ? "scheduled" : ""), + (task->state == SD_RUNNABLE ? "runnable" : "not runnable"), - (task->state & SD_IN_FIFO ? "in fifo" : ""), - (task->state & SD_RUNNING ? "running" : ""), - (task->state & SD_DONE ? "done" : ""), - (task->state & SD_FAILED ? "failed" : "")); + (task->state == SD_IN_FIFO ? "in fifo" : ""), + (task->state == SD_RUNNING ? "running" : ""), + (task->state == SD_DONE ? "done" : ""), + (task->state == SD_FAILED ? "failed" : "")); XBT_INFO(" - state: %s", statename); free(statename); @@ -1386,9 +1386,10 @@ void SD_task_distribute_comp_amdhal(SD_task_t task, int ws_count) "Task %s is not a SD_TASK_COMP_PAR_AMDAHL typed task." "Cannot use this function.", SD_task_get_name(task)); - task->computation_amount = xbt_new0(double, ws_count); task->communication_amount = xbt_new0(double, ws_count * ws_count); + if (task->workstation_list) + xbt_free(task->workstation_list); task->workstation_nb = ws_count; task->workstation_list = xbt_new0(SD_workstation_t, ws_count); @@ -1538,6 +1539,10 @@ void SD_task_schedulev(SD_task_t task, int count, task->workstation_list[i]; before->workstation_nb += count; + if (before->computation_amount) + xbt_free(before->computation_amount); + if (before->communication_amount) + xbt_free(before->communication_amount); before->computation_amount = xbt_new0(double, before->workstation_nb); @@ -1603,6 +1608,11 @@ void SD_task_schedulev(SD_task_t task, int count, after->workstation_nb += count; + if (after->computation_amount) + xbt_free(after->computation_amount); + if (after->communication_amount) + xbt_free(after->communication_amount); + after->computation_amount = xbt_new0(double, after->workstation_nb); after->communication_amount = xbt_new0(double, after->workstation_nb*