}
static XBT_INLINE int saturated_constraint_set_update(lmm_system_t sys,
- lmm_constraint_t
- cnst,
- double *min_usage)
+ lmm_constraint_t
+ cnst,
+ double *min_usage)
{
- lmm_constraint_t useless_cnst = NULL;
+ volatile double usage;
XBT_IN("sys=%p, cnst=%p, min_usage=%f", sys, cnst, *min_usage);
if (cnst->usage <= 0) {
XBT_OUT();
return 1;
}
- if ((*min_usage < 0) || (*min_usage > cnst->remaining / cnst->usage)) {
- *min_usage = cnst->remaining / cnst->usage;
+ usage = cnst->remaining / cnst->usage;
+ if (*min_usage < 0 || *min_usage > usage) {
+ *min_usage = usage;
XBT_HERE(" min_usage=%f (cnst->remaining=%f, cnst->usage=%f)",
*min_usage, cnst->remaining, cnst->usage);
- while ((useless_cnst =
- xbt_swag_getFirst(&(sys->saturated_constraint_set))))
- xbt_swag_remove(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));
+ xbt_swag_reset(&sys->saturated_constraint_set);
+ xbt_swag_insert(cnst, &sys->saturated_constraint_set);
+ } else if (*min_usage == usage) {
+ xbt_swag_insert(cnst, &sys->saturated_constraint_set);
}
XBT_OUT();
return 0;