X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c9f1e4b399f0d6093f78cb7fda7beaeabded297f..d7417d92e963c0d6ed8443454a56c85a3728d214:/src/surf/network.c diff --git a/src/surf/network.c b/src/surf/network.c index 57196e47c3..f0c5e325f0 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -39,9 +39,8 @@ static void create_routing_table(void) static void link_free(void *nw_link) { - free(((link_CM02_t) nw_link)->name); xbt_dict_free(&(((link_CM02_t) nw_link)->properties)); - free(nw_link); + surf_resource_free(nw_link); } static link_CM02_t link_new(char *name, @@ -59,8 +58,8 @@ static link_CM02_t link_new(char *name, xbt_assert1(!xbt_dict_get_or_null(link_set, name), "Link '%s' declared several times in the platform file.", name); - nw_link->model = surf_network_model; - nw_link->name = name; + nw_link->generic_resource.model = surf_network_model; + nw_link->generic_resource.name = name; nw_link->bw_current = bw_initial; if (bw_trace) nw_link->bw_event = @@ -90,12 +89,6 @@ static link_CM02_t link_new(char *name, return nw_link; } -static void network_card_free(void *nw_card) -{ - free(((network_card_CM02_t) nw_card)->name); - free(nw_card); -} - static int network_card_new(const char *card_name) { network_card_CM02_t card = @@ -103,10 +96,10 @@ static int network_card_new(const char *card_name) if (!card) { card = xbt_new0(s_network_card_CM02_t, 1); - card->name = xbt_strdup(card_name); + card->generic_resource.name = xbt_strdup(card_name); card->id = host_number++; xbt_dict_set(surf_model_resource_set(surf_network_model), card_name, card, - network_card_free); + surf_resource_free); } return card->id; } @@ -301,18 +294,13 @@ static void define_callbacks(const char *file) surfxml_add_callback(ETag_surfxml_platform_cb_list, &add_loopback); } -static const char *get_resource_name(void *resource_id) -{ - return ((network_card_CM02_t) resource_id)->name; -} - static int resource_used(void *resource_id) { return lmm_constraint_used(network_maxmin_system, ((link_CM02_t) resource_id)->constraint); } -static int action_free(surf_action_t action) +static int action_unref(surf_action_t action) { action->refcount--; if (!action->refcount) { @@ -326,7 +314,7 @@ static int action_free(surf_action_t action) return 0; } -static void action_use(surf_action_t action) +static void action_ref(surf_action_t action) { action->refcount++; } @@ -341,19 +329,6 @@ static void action_recycle(surf_action_t action) return; } -static void action_change_state(surf_action_t action, - e_surf_action_state_t state) -{ -/* if((state==SURF_ACTION_DONE) || (state==SURF_ACTION_FAILED)) */ -/* if(((surf_action_network_CM02_t)action)->variable) { */ -/* lmm_variable_disable(network_maxmin_system, ((surf_action_network_CM02_t)action)->variable); */ -/* ((surf_action_network_CM02_t)action)->variable = NULL; */ -/* } */ - - surf_action_change_state(action, state); - return; -} - static double share_resources(double now) { s_surf_action_network_CM02_t s_action; @@ -413,11 +388,11 @@ static void update_actions_state(double now, double delta) if ((action->generic_action.remains <= 0) && (lmm_get_variable_weight(action->variable) > 0)) { action->generic_action.finish = surf_get_clock(); - action_change_state((surf_action_t) action, SURF_ACTION_DONE); + surf_network_model->action_state_set((surf_action_t) action, SURF_ACTION_DONE); } else if ((action->generic_action.max_duration != NO_MAX_DURATION) && (action->generic_action.max_duration <= 0)) { action->generic_action.finish = surf_get_clock(); - action_change_state((surf_action_t) action, SURF_ACTION_DONE); + surf_network_model->action_state_set((surf_action_t) action, SURF_ACTION_DONE); } } @@ -491,10 +466,10 @@ static void update_resource_state(void *id, (network_maxmin_system, cnst, &elem))) { surf_action_t action = lmm_variable_id(var); - if (surf_action_get_state(action) == SURF_ACTION_RUNNING || - surf_action_get_state(action) == SURF_ACTION_READY) { + if (surf_action_state_get(action) == SURF_ACTION_RUNNING || + surf_action_state_get(action) == SURF_ACTION_READY) { action->finish = date; - action_change_state(action, SURF_ACTION_FAILED); + surf_network_model->action_state_set(action, SURF_ACTION_FAILED); } } } @@ -521,12 +496,12 @@ static surf_action_t communicate(void *src, void *dst, double size, total_route_size = route_size + src->link_nb + dst->nb */ int i; - XBT_IN4("(%s,%s,%g,%g)", card_src->name, card_dst->name, size, rate); + XBT_IN4("(%s,%s,%g,%g)", card_src->generic_resource.name, card_dst->generic_resource.name, size, rate); /* LARGE PLATFORMS HACK: assert on total_route_size */ xbt_assert2(route_size, "You're trying to send data from %s to %s but there is no connexion between these two cards.", - card_src->name, card_dst->name); + card_src->generic_resource.name, card_dst->generic_resource.name); action = xbt_new0(s_surf_action_network_CM02_t, 1); @@ -616,11 +591,6 @@ static int get_route_size(void *src, void *dst) return ROUTE_SIZE(card_src->id, card_dst->id); } -static const char *get_link_name(const void *link) -{ - return ((link_CM02_t) link)->name; -} - static double get_link_bandwidth(const void *link) { return ((link_CM02_t) link)->bw_current; @@ -696,17 +666,11 @@ static void surf_network_model_init_internal(void) { surf_network_model = surf_model_init(); - surf_network_model->get_resource_name = get_resource_name; - surf_network_model->action_get_state = surf_action_get_state; - surf_network_model->action_get_start_time = surf_action_get_start_time; - surf_network_model->action_get_finish_time = surf_action_get_finish_time; - surf_network_model->action_free = action_free; - surf_network_model->action_use = action_use; + surf_network_model->name = "network"; + surf_network_model->action_unref = action_unref; + surf_network_model->action_ref = action_ref; surf_network_model->action_cancel = action_cancel; surf_network_model->action_recycle = action_recycle; - surf_network_model->action_change_state = action_change_state; - surf_network_model->action_set_data = surf_action_set_data; - surf_network_model->name = "network"; surf_network_model->model_private->resource_used = resource_used; surf_network_model->model_private->share_resources = share_resources; @@ -724,7 +688,6 @@ static void surf_network_model_init_internal(void) surf_network_model->extension.network.communicate = communicate; surf_network_model->extension.network.get_route = get_route; surf_network_model->extension.network.get_route_size = get_route_size; - surf_network_model->extension.network.get_link_name = get_link_name; surf_network_model->extension.network.get_link_bandwidth = get_link_bandwidth; surf_network_model->extension.network.get_link_latency = get_link_latency;