Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Export functions in SURF to indicate whether a link is shared or not.
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 18 Jun 2008 22:23:39 +0000 (22:23 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 18 Jun 2008 22:23:39 +0000 (22:23 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5766 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/include/surf/maxmin.h
src/include/surf/surf.h
src/surf/maxmin.c
src/surf/network.c
src/surf/network_constant.c
src/surf/workstation.c
src/surf/workstation_ptask_L07.c

index 7384349..d4356ac 100644 (file)
@@ -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);
 
index 7c10146..97c9d91 100644 (file)
@@ -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;
 
index 8e8d049..dcb4b70 100644 (file)
@@ -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);
index 32d0482..bb29cfa 100644 (file)
@@ -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;
 
index f98d480..8316e17 100644 (file)
@@ -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;
 
index 177145b..78e3360 100644 (file)
@@ -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();
 }
 
index 4988bd8..f69cb1e 100644 (file)
@@ -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;