X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/513ac189cf555a929a9fed734fa5bc4e9c6a615e..f873a419ff7d53f08e076924cb65ed987681f1eb:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 40834c1ce3..4afd973c9e 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -7,7 +7,7 @@ #include "xbt/ex.h" #include "xbt/dict.h" -#include "gras_config.h" +#include "portable.h" #include "workstation_private.h" #include "cpu_private.h" #include "network_private.h" @@ -62,19 +62,22 @@ static const char *get_resource_name(void *resource_id) static int resource_used(void *resource_id) { - xbt_assert0(0, - "Workstation is a virtual model. I should not be there!"); - return 0; + THROW_IMPOSSIBLE; /* This model does not implement parallel tasks */ +} + +static void parallel_action_cancel(surf_action_t action) +{ + THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks */ } static int parallel_action_free(surf_action_t action) { - xbt_assert0(0, "This model does not implement parallel tasks"); + THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks */ } static void parallel_action_use(surf_action_t action) { - xbt_assert0(0, "This model does not implement parallel tasks"); + THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks */ } static int action_free(surf_action_t action) @@ -113,7 +116,7 @@ static void action_cancel(surf_action_t action) surf_cpu_model->common_public->action_cancel(action); else if (action->model_type == (surf_model_t) surf_workstation_model) - parallel_action_use(action); + parallel_action_cancel(action); else DIE_IMPOSSIBLE; return; @@ -155,8 +158,7 @@ static void update_resource_state(void *id, tmgr_trace_event_t event_type, double value) { - xbt_assert0(0, "This model does not implement parallel tasks"); - return; + THROW_IMPOSSIBLE; /* This model does not implement parallel tasks */ } static surf_action_t execute(void *workstation, double size) @@ -249,6 +251,12 @@ static double get_available_speed(void *workstation) get_available_speed(((workstation_CLM03_t) workstation)->cpu); } +static xbt_dict_t get_properties(void *workstation) +{ + return surf_cpu_model->common_public-> + get_properties(((workstation_CLM03_t) workstation)->cpu); +} + static surf_action_t execute_parallel_task(int workstation_nb, void **workstation_list, double *computation_amount, @@ -256,7 +264,7 @@ static surf_action_t execute_parallel_task(int workstation_nb, double amount, double rate) { - xbt_assert0(0, "This model does not implement parallel tasks"); + THROW_UNIMPLEMENTED; /* This model does not implement parallel tasks */ } @@ -381,6 +389,10 @@ static void surf_workstation_model_init_internal(void) surf_workstation_model->extension_public->get_speed = get_speed; surf_workstation_model->extension_public->get_available_speed = get_available_speed; + + /*manage the properties of the workstation*/ + surf_workstation_model->common_public->get_properties = get_properties; + surf_workstation_model->extension_public->communicate = communicate; surf_workstation_model->extension_public->execute_parallel_task = execute_parallel_task;