X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dce3c1b9a37a3489b56a9b5fc9fc2f10a7bc5f79..cdf30f059dbd4871e2ef4fddb30c1f0f1ad6e34e:/src/surf/workstation_clm03.cpp?ds=sidebyside diff --git a/src/surf/workstation_clm03.cpp b/src/surf/workstation_clm03.cpp index 11252b3ddd..f149e7f1e0 100644 --- a/src/surf/workstation_clm03.cpp +++ b/src/surf/workstation_clm03.cpp @@ -98,14 +98,15 @@ ActionPtr WorkstationCLM03Model::executeParallelTask(int workstation_nb, double *communication_amount, double rate){ #define cost_or_zero(array,pos) ((array)?(array)[pos]:0.0) + ActionPtr action =NULL; if ((workstation_nb == 1) - && (cost_or_zero(communication_amount, 0) == 0.0)) - return ((WorkstationCLM03Ptr)workstation_list[0])->execute(computation_amount[0]); - else if ((workstation_nb == 1) - && (cost_or_zero(computation_amount, 0) == 0.0)) - return communicate((WorkstationCLM03Ptr)workstation_list[0], + && (cost_or_zero(communication_amount, 0) == 0.0)){ + action = ((WorkstationCLM03Ptr)workstation_list[0])->execute(computation_amount[0]); + } else if ((workstation_nb == 1) + && (cost_or_zero(computation_amount, 0) == 0.0)) { + action = communicate((WorkstationCLM03Ptr)workstation_list[0], (WorkstationCLM03Ptr)workstation_list[0],communication_amount[0], rate); - else if ((workstation_nb == 2) + } else if ((workstation_nb == 2) && (cost_or_zero(computation_amount, 0) == 0.0) && (cost_or_zero(computation_amount, 1) == 0.0)) { int i,nb = 0; @@ -117,14 +118,15 @@ ActionPtr WorkstationCLM03Model::executeParallelTask(int workstation_nb, value = cost_or_zero(communication_amount, i); } } - if (nb == 1) - return communicate((WorkstationCLM03Ptr)workstation_list[0], + if (nb == 1){ + action = communicate((WorkstationCLM03Ptr)workstation_list[0], (WorkstationCLM03Ptr)workstation_list[1],value, rate); + } } else THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks */ #undef cost_or_zero - - return NULL; + xbt_free((WorkstationCLM03Ptr)workstation_list); + return action; } ActionPtr WorkstationCLM03Model::communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate){