X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2177056d39279d30b965cf282972c16e305063ff..c486ced6e196a837494f2c8a8fb54e6ad02657e5:/src/surf/workstation_ptask_L07.c?ds=sidebyside diff --git a/src/surf/workstation_ptask_L07.c b/src/surf/workstation_ptask_L07.c index 359a0037f9..b99bd8f94c 100644 --- a/src/surf/workstation_ptask_L07.c +++ b/src/surf/workstation_ptask_L07.c @@ -357,26 +357,6 @@ static void finalize(void) /******* Resource Private **********/ /**************************************/ -static surf_action_t execute(void *cpu, double size) -{ - xbt_assert0(0,"This model does not implement plain computations"); -} - -static surf_action_t action_sleep(void *cpu, double duration) -{ - surf_action_workstation_L07_t action = NULL; - - XBT_IN2("(%s,%g)",((cpu_L07_t)cpu)->name,duration); - - action = (surf_action_workstation_L07_t) execute(cpu, 1.0); - action->generic_action.max_duration = duration; - action->suspended = 2; - lmm_update_variable_weight(ptask_maxmin_system, action->variable, 0.0); - - XBT_OUT; - return (surf_action_t) action; -} - static e_surf_cpu_state_t resource_get_state(void *cpu) { return ((cpu_L07_t) cpu)->state_current; @@ -392,11 +372,6 @@ static double get_available_speed(void *cpu) return ((cpu_L07_t) cpu)->power_current; } -static surf_action_t communicate(void *src, void *dst, double size, double rate) -{ - xbt_assert0(0,"This model does not implement plain communications"); -} - static surf_action_t execute_parallel_task(int workstation_nb, void **workstation_list, double *computation_amount, @@ -488,6 +463,50 @@ static surf_action_t execute_parallel_task(int workstation_nb, return (surf_action_t) action; } +static surf_action_t execute(void *cpu, double size) +{ + double val = 0.0; + + return execute_parallel_task(1, &cpu, &size, &val, 1, -1); +} + +static surf_action_t communicate(void *src, void *dst, double size, double rate) +{ + void **workstation_list = xbt_new0(void*,2); + double *computation_amount = xbt_new0(double,2); + double *communication_amount = xbt_new0(double,4); + surf_action_t res = NULL; + + workstation_list[0]=src; + workstation_list[1]=src; + communication_amount[1] = size; + + res = execute_parallel_task(2, workstation_list, + computation_amount, communication_amount, + 1, rate); + + free(computation_amount); + free(communication_amount); + free(workstation_list); + + return res; +} + +static surf_action_t action_sleep(void *cpu, double duration) +{ + surf_action_workstation_L07_t action = NULL; + + XBT_IN2("(%s,%g)",((cpu_L07_t)cpu)->name,duration); + + action = (surf_action_workstation_L07_t) execute(cpu, 1.0); + action->generic_action.max_duration = duration; + action->suspended = 2; + lmm_update_variable_weight(ptask_maxmin_system, action->variable, 0.0); + + XBT_OUT; + return (surf_action_t) action; +} + /* returns an array of network_link_L07_t */ static const void** get_route(void *src, void *dst) { cpu_L07_t card_src = src;