From d1f873975cf6b465d3ba98df6a7b5d664f2d0a55 Mon Sep 17 00:00:00 2001 From: alegrand Date: Wed, 18 Jun 2008 22:23:39 +0000 Subject: [PATCH] Export functions in SURF to indicate whether a link is shared or not. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5766 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/surf/maxmin.h | 1 + src/include/surf/surf.h | 2 ++ src/surf/maxmin.c | 5 +++++ src/surf/network.c | 7 +++++++ src/surf/network_constant.c | 7 +++++++ src/surf/workstation.c | 8 ++++++++ src/surf/workstation_ptask_L07.c | 6 ++++++ 7 files changed, 36 insertions(+) diff --git a/src/include/surf/maxmin.h b/src/include/surf/maxmin.h index 7384349d53..d4356acad7 100644 --- a/src/include/surf/maxmin.h +++ b/src/include/surf/maxmin.h @@ -35,6 +35,7 @@ void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var); XBT_PUBLIC(lmm_constraint_t) lmm_constraint_new(lmm_system_t sys, void *id, double bound_value); void lmm_constraint_shared(lmm_constraint_t cnst); +int lmm_constraint_is_shared(lmm_constraint_t cnst); void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst); diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 7c1014660a..97c9d91f16 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -260,6 +260,7 @@ typedef struct surf_network_model_extension_public { const char* (*get_link_name) (const void *link); double (*get_link_bandwidth) (const void *link); double (*get_link_latency) (const void *link); + int (*link_shared) (const void *link); } s_surf_network_model_extension_public_t, *surf_network_model_extension_public_t; @@ -420,6 +421,7 @@ typedef struct surf_workstation_model_extension_public { const char* (*get_link_name) (const void *link); /**< Return the name of a network link */ double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */ double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */ + int (*link_shared) (const void *link); } s_surf_workstation_model_extension_public_t, *surf_workstation_model_extension_public_t; diff --git a/src/surf/maxmin.c b/src/surf/maxmin.c index 8e8d049715..dcb4b7064c 100644 --- a/src/surf/maxmin.c +++ b/src/surf/maxmin.c @@ -126,6 +126,11 @@ void lmm_constraint_shared(lmm_constraint_t cnst) cnst->shared = 0; } +int lmm_constraint_is_shared(lmm_constraint_t cnst) +{ + return (cnst->shared); +} + void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst) { remove_constraint(sys, cnst); diff --git a/src/surf/network.c b/src/surf/network.c index 32d04827c2..bb29cfabc5 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -617,6 +617,11 @@ static double get_link_latency(const void *link) return ((link_CM02_t) link)->lat_current; } +static int link_shared(const void *link) +{ + return lmm_constraint_is_shared(((link_CM02_t) link)->constraint); +} + static xbt_dict_t get_properties(void *link) { return ((link_CM02_t) link)->properties; @@ -749,6 +754,8 @@ static void surf_network_model_init_internal(void) get_link_bandwidth; surf_network_model->extension_public->get_link_latency = get_link_latency; + surf_network_model->extension_public->link_shared = + link_shared; surf_network_model->common_public->get_properties = get_properties; diff --git a/src/surf/network_constant.c b/src/surf/network_constant.c index f98d4808b2..8316e17168 100644 --- a/src/surf/network_constant.c +++ b/src/surf/network_constant.c @@ -259,6 +259,11 @@ static double get_link_latency(const void *link) DIE_IMPOSSIBLE; } +static int link_shared(const void *link) +{ + DIE_IMPOSSIBLE; +} + static xbt_dict_t get_properties(void *link) { DIE_IMPOSSIBLE; @@ -369,6 +374,8 @@ static void surf_network_model_init_internal(void) get_link_bandwidth; surf_network_model->extension_public->get_link_latency = get_link_latency; + surf_network_model->extension_public->link_shared = + link_shared; surf_network_model->common_public->get_properties = get_properties; diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 177145b07c..78e3360a80 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -305,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); @@ -408,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(); } diff --git a/src/surf/workstation_ptask_L07.c b/src/surf/workstation_ptask_L07.c index 4988bd8db8..f69cb1eb07 100644 --- a/src/surf/workstation_ptask_L07.c +++ b/src/surf/workstation_ptask_L07.c @@ -665,6 +665,10 @@ static double get_link_latency(const void *link) return ((link_L07_t) link)->lat_current; } +static int link_shared(const void *link) +{ + return lmm_constraint_is_shared(((link_L07_t) link)->constraint); +} /**************************************/ /*** Resource Creation & Destruction **/ @@ -1123,6 +1127,8 @@ static void 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; surf_workstation_model->common_public->get_properties = get_properties; -- 2.20.1