From 11cdc4be7f72ada8c1216d3ff9e6d9eb50672f49 Mon Sep 17 00:00:00 2001 From: coldpeace Date: Tue, 13 Jul 2010 14:07:17 +0000 Subject: [PATCH] adding bypass methods to the network model extension git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8023 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/surf/surf.h | 6 ++++++ src/surf/network.c | 43 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index ee6a3b669f..b68c617fae 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -172,6 +172,7 @@ XBT_PUBLIC_DATA(routing_t) used_routing; double (*get_link_bandwidth) (const void *link); double (*get_link_latency) (const void *link); int (*link_shared) (const void *link); + void (*init_bypass) (const char *id,double intial_bandwidth,double initial_latency); } s_surf_model_extension_network_t; /** \brief Workstation model extension public @@ -402,6 +403,11 @@ XBT_PUBLIC(void) surf_network_model_init_Vivaldi(const char *filename); */ XBT_PUBLIC(void) surf_network_model_init_CM02(const char *filename); +/** + * brief initialize the the network model bypassing the XML parser + */ +XBT_PUBLIC(void) surf_network_model_init_bypass(const char* id,double initial_bw,double initial_lat); + #ifdef HAVE_GTNETS /** \brief Initializes the platform with the network model GTNETS * \ingroup SURF_models diff --git a/src/surf/network.c b/src/surf/network.c index 86ec1833d7..4dd36a2d86 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -587,6 +587,39 @@ static void net_action_set_max_duration(surf_action_t action, double duration) action->max_duration = duration; } + +static void network_init_bypass(const char *name,double initial_bandwidth,double initial_latency) +{ + /** + * FIXME : Only values : name,bandwidth and latency are intercepted, + * the others properties for link still hard coded at this level !! + */ + char *name_link; + double bw_initial; + tmgr_trace_t bw_trace; + double lat_initial; + tmgr_trace_t lat_trace; + e_surf_resource_state_t state_initial_link = SURF_RESOURCE_ON; + e_surf_link_sharing_policy_t policy_initial_link = SURF_LINK_SHARED; + tmgr_trace_t state_trace; + + + name_link = (char*)name; + bw_initial = initial_bandwidth; + bw_trace = tmgr_trace_new(""); + lat_initial = initial_latency; + lat_trace = tmgr_trace_new(""); + // FIXME Hard Coded Values + state_initial_link = SURF_RESOURCE_ON; + policy_initial_link = SURF_LINK_SHARED; + state_trace = tmgr_trace_new(""); + + net_link_new(name_link, bw_initial, bw_trace, + lat_initial, lat_trace, state_initial_link, state_trace, + policy_initial_link, xbt_dict_new()); + +} + static void net_finalize(void) { surf_model_exit(surf_network_model); @@ -625,6 +658,7 @@ static void surf_network_model_init_internal(void) net_get_link_bandwidth; surf_network_model->extension.network.get_link_latency = net_get_link_latency; surf_network_model->extension.network.link_shared = net_link_shared; + surf_network_model->extension.network.init_bypass = network_init_bypass; if (!network_maxmin_system) network_maxmin_system = lmm_system_new(); @@ -636,6 +670,8 @@ static void surf_network_model_init_internal(void) NULL)); } + + /************************************************************************/ /* New model based on LV08 and experimental results of MPI ping-pongs */ /************************************************************************/ @@ -763,3 +799,10 @@ void surf_network_model_init_Vegas(const char *filename) update_model_description(surf_network_model_description, "Vegas", surf_network_model); } + + +void surf_network_model_init_bypass(const char *link_id,double initial_bw,double initial_lat) +{ + return surf_network_model->extension.network. + init_bypass(link_id,initial_bw,initial_lat); +} -- 2.20.1