-/* Copyright (c) 2004-2011. The SimGrid Team.
+/* Copyright (c) 2004-2013. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
int size;
} s_dyn_light_t, *dyn_light_t;
-double sg_maxmin_precision = 0.00001;
+XBT_EXPORT_NO_IMPORT(double) sg_maxmin_precision = 0.00001;
static void *lmm_variable_mallocator_new_f(void);
static void lmm_variable_mallocator_free_f(void *var);
} else if (*min_usage == usage) {
if(saturated_constraint_set->pos == saturated_constraint_set->size) { // realloc the size
saturated_constraint_set->size *= 2;
- saturated_constraint_set->data = realloc(saturated_constraint_set->data, (saturated_constraint_set->size) * sizeof(int));
+ saturated_constraint_set->data = xbt_realloc(saturated_constraint_set->data, (saturated_constraint_set->size) * sizeof(int));
}
saturated_constraint_set->data[saturated_constraint_set->pos] = cnst_light_num;
saturated_constraint_set->pos++;
}
xbt_swag_reset(&sys->modified_constraint_set);
}
+
+/**
+ * Returns total resource load
+ *
+ * \param cnst the lmm_constraint_t associated to the resource
+ *
+ */
+double lmm_constraint_get_usage(lmm_constraint_t cnst) {
+ double usage = 0.0;
+ xbt_swag_t elem_list = &(cnst->element_set);
+ lmm_element_t elem = NULL;
+
+ xbt_swag_foreach(elem, elem_list) {
+ /* 0-weighted elements (ie, sleep actions) are at the end of the swag and we don't want to consider them */
+ if (elem->variable->weight <= 0)
+ break;
+ if ((elem->value > 0)) {
+ if (cnst->shared)
+ usage += elem->value * elem->variable->value;
+ else if (usage < elem->value * elem->variable->value)
+ usage = elem->value * elem->variable->value;
+ }
+ }
+ return usage;
+}
+
+