X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9ee8810614e6bd6e779e3d90790aa586fe66c6a9..d276a42405091143c5b3e204d38068c4cec47904:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 9a02483ce4..78e3360a80 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -10,7 +10,10 @@ #include "portable.h" #include "workstation_private.h" #include "cpu_private.h" -#include "network_private.h" +#include "network_common.h" + +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_workstation, surf, + "Logging specific to the SURF workstation module"); surf_workstation_model_t surf_workstation_model = NULL; xbt_dict_t workstation_set = NULL; @@ -34,7 +37,7 @@ static void workstation_free(void *workstation) free(workstation); } -static void create_workstations(void) +void create_workstations(void) { xbt_dict_cursor_t cursor = NULL; char *name = NULL; @@ -62,19 +65,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 +119,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; @@ -153,10 +159,9 @@ static void update_actions_state(double now, double delta) static void update_resource_state(void *id, tmgr_trace_event_t event_type, - double value) + double value, double date) { - 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 +254,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 +267,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 */ } @@ -294,6 +305,11 @@ static double get_link_latency(const void *link) return surf_network_model->extension_public->get_link_latency(link); } +static int link_shared(const void *link) +{ + return surf_network_model->extension_public->get_link_latency(link); +} + static void finalize(void) { xbt_dict_free(&workstation_set); @@ -381,6 +397,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; @@ -393,6 +413,9 @@ static void surf_workstation_model_init_internal(void) get_link_bandwidth; surf_workstation_model->extension_public->get_link_latency = get_link_latency; + surf_workstation_model->extension_public->link_shared = + link_shared; + workstation_set = xbt_dict_new(); } @@ -412,11 +435,9 @@ void surf_workstation_model_init_CLM03(const char *filename) surf_workstation_model_init_internal(); surf_cpu_model_init_Cas01(filename); surf_network_model_init_CM02(filename); - create_workstations(); update_model_description(surf_workstation_model_description, - surf_workstation_model_description_size, - "CLM03", - (surf_model_t) surf_workstation_model); + "CLM03", + (surf_model_t) surf_workstation_model); xbt_dynar_push(model_list, &surf_workstation_model); } @@ -426,12 +447,10 @@ void surf_workstation_model_init_compound(const char *filename) xbt_assert0(surf_cpu_model, "No CPU model defined yet!"); xbt_assert0(surf_network_model, "No network model defined yet!"); surf_workstation_model_init_internal(); - create_workstations(); update_model_description(surf_workstation_model_description, - surf_workstation_model_description_size, - "compound", - (surf_model_t) surf_workstation_model); + "compound", + (surf_model_t) surf_workstation_model); xbt_dynar_push(model_list, &surf_workstation_model); }