X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d88a07362ad9bf21e7297c5f4e41806a2f56a167..3af9dcb5714db015a7038a58701b2b453f52c6ca:/src/surf/network.c diff --git a/src/surf/network.c b/src/surf/network.c index aca670c660..c959b37d8b 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -6,7 +6,7 @@ * highly dependent on the maxmin lmm module. */ -/* Copyright (c) 2009, 2010, 2011. The SimGrid Team. +/* Copyright (c) 2004-2013. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -81,7 +81,8 @@ static double constant_bandwidth_constraint(double rate, double bound, static int factor_cmp(const void *pa, const void *pb) { - return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor); + return (((s_smpi_factor_t*)pa)->factor > ((s_smpi_factor_t*)pb)->factor) ? 1 : + (((s_smpi_factor_t*)pa)->factor < ((s_smpi_factor_t*)pb)->factor) ? -1 : 0; } @@ -126,12 +127,12 @@ static double smpi_bandwidth_factor(double size) double current=1.0; xbt_dynar_foreach(smpi_bw_factor, iter, fact) { if (size <= fact.factor) { - XBT_DEBUG("%lf <= %ld return %f", size, fact.factor, current); + XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current); return current; }else current=fact.value; } - XBT_DEBUG("%lf > %ld return %f", size, fact.factor, current); + XBT_DEBUG("%f > %ld return %f", size, fact.factor, current); return current; } @@ -147,12 +148,12 @@ static double smpi_latency_factor(double size) double current=1.0; xbt_dynar_foreach(smpi_lat_factor, iter, fact) { if (size <= fact.factor) { - XBT_DEBUG("%lf <= %ld return %f", size, fact.factor, current); + XBT_DEBUG("%f <= %ld return %f", size, fact.factor, current); return current; }else current=fact.value; } - XBT_DEBUG("%lf > %ld return %f", size, fact.factor, current); + XBT_DEBUG("%f > %ld return %f", size, fact.factor, current); return current; } @@ -379,8 +380,8 @@ static void net_update_resource_state(void *id, double value, double date) { link_CM02_t nw_link = id; - /* printf("[" "%lg" "] Asking to update network card \"%s\" with value " */ - /* "%lg" " for event %p\n", surf_get_clock(), nw_link->name, */ + /* printf("[" "%g" "] Asking to update network card \"%s\" with value " */ + /* "%g" " for event %p\n", surf_get_clock(), nw_link->name, */ /* value, event_type); */ if (event_type == nw_link->lmm_resource.power.event) { @@ -665,10 +666,9 @@ static void net_finalize(surf_model_t network_model) surf_model_exit(network_model); network_model = NULL; - if (smpi_bw_factor) - xbt_dynar_free(&smpi_bw_factor); - if (smpi_lat_factor) - xbt_dynar_free(&smpi_lat_factor); + xbt_dict_free(&gap_lookup); + xbt_dynar_free(&smpi_bw_factor); + xbt_dynar_free(&smpi_lat_factor); } static void smpi_gap_append(double size, const link_CM02_t link, @@ -681,7 +681,7 @@ static void smpi_gap_append(double size, const link_CM02_t link, if (sg_sender_gap > 0.0) { if (!gap_lookup) { - gap_lookup = xbt_dict_new(); + gap_lookup = xbt_dict_new_homogeneous(NULL); } fifo = (xbt_fifo_t) xbt_dict_get_or_null(gap_lookup, src); action->sender.gap = 0.0; @@ -737,7 +737,7 @@ static void set_update_mechanism(void) { char *optim = xbt_cfg_get_string(_sg_cfg_set, "network/optim"); int select = - xbt_cfg_get_int(_sg_cfg_set, "network/maxmin_selective_update"); + xbt_cfg_get_boolean(_sg_cfg_set, "network/maxmin_selective_update"); if (!strcmp(optim, "Full")) { surf_network_model->model_private->update_mechanism = UM_FULL; @@ -763,6 +763,7 @@ static void surf_network_model_init_internal(void) set_update_mechanism(); surf_network_model->name = "network"; + surf_network_model->type = SURF_MODEL_TYPE_NETWORK; surf_network_model->action_unref = surf_action_unref; surf_network_model->action_cancel = surf_action_cancel; surf_network_model->action_recycle = net_action_recycle; @@ -796,6 +797,9 @@ static void surf_network_model_init_internal(void) surf_network_model->suspend = surf_action_suspend; surf_network_model->resume = surf_action_resume; surf_network_model->is_suspended = surf_action_is_suspended; + + xbt_assert(surf_cpu_model_pm); + xbt_assert(surf_cpu_model_vm); surf_cpu_model_pm->set_max_duration = surf_action_set_max_duration; surf_cpu_model_vm->set_max_duration = surf_action_set_max_duration;