Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bug fix and add a fonction indicating whether a constraint is active or not.
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 20 Nov 2004 00:13:14 +0000 (00:13 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Sat, 20 Nov 2004 00:13:14 +0000 (00:13 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@521 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/include/surf/maxmin.h
src/surf/maxmin.c

index 1d76633..e0b0723 100644 (file)
@@ -40,5 +40,7 @@ void lmm_update_variable_weight(lmm_variable_t var,
 void lmm_update_constraint_bound(lmm_constraint_t cnst,
                                 xbt_maxmin_float_t bound);
 
+int lmm_constraint_used(lmm_system_t sys, lmm_constraint_t cnst);
+
 void lmm_solve(lmm_system_t sys);
 #endif                         /* _SURF_MAXMIN_H */
index 7660fb1..018d6b0 100644 (file)
@@ -173,9 +173,9 @@ static void saturated_constraints_update(lmm_system_t sys,
 
     *min_usage = cnst->remaining / cnst->usage;
 
-    while (xbt_swag_extract
-          (useless_cnst, &(sys->saturated_constraint_set))) {
-    }
+    while ((useless_cnst = xbt_swag_getFirst(&(sys->saturated_constraint_set))))
+      xbt_swag_extract(useless_cnst, &(sys->saturated_constraint_set));
+
     xbt_swag_insert(cnst, &(sys->saturated_constraint_set));
   } else if (*min_usage == cnst->remaining / cnst->usage) {
     xbt_swag_insert(cnst, &(sys->saturated_constraint_set));
@@ -313,6 +313,10 @@ void lmm_update_constraint_bound(lmm_constraint_t cnst,
   cnst->bound = bound;
 }
 
+int lmm_constraint_used(lmm_system_t sys, lmm_constraint_t cnst)
+{
+  return xbt_swag_belongs(cnst,&(sys->active_constraint_set));
+}
 
 
 /* void lmm_print(lmm_system_t sys) */