surf_cpu_resource->common_public->states.failed_action_set;
xbt_swag_foreach_safe(action, next_action, running_actions) {
- action->generic_action.remains -=
- lmm_variable_getvalue(action->variable) * delta;
+ surf_double_update(&(action->generic_action.remains),
+ lmm_variable_getvalue(action->variable) * delta);
if (action->generic_action.max_duration != NO_MAX_DURATION)
- action->generic_action.max_duration -= delta;
+ surf_double_update(&(action->generic_action.max_duration), delta);
if ((action->generic_action.remains <= 0) &&
(lmm_get_variable_weight(action->variable)>0)) {
action->generic_action.finish = surf_get_clock();
deltap = delta;
if (action->latency > 0) {
if (action->latency > deltap) {
- action->latency -= deltap;
+ surf_double_update(&(action->latency),deltap);
deltap = 0.0;
} else {
- deltap -= action->latency;
+ surf_double_update(&(deltap), action->latency);
action->latency = 0.0;
}
if ((action->latency == 0.0) && !(action->suspended))
lmm_update_variable_weight(maxmin_system, action->variable, 1.0);
}
- action->generic_action.remains -=
- lmm_variable_getvalue(action->variable) * deltap;
+ surf_double_update(&(action->generic_action.remains),
+ lmm_variable_getvalue(action->variable) * deltap);
if (action->generic_action.max_duration != NO_MAX_DURATION)
- action->generic_action.max_duration -= delta;
+ surf_double_update(&(action->generic_action.max_duration), delta);
/* if(action->generic_action.remains<.00001) action->generic_action.remains=0; */
void *data);
FILE *surf_fopen(const char *name, const char *mode);
+static _XBT_INLINE void surf_double_update(double *variable, double value)
+{
+ *variable -= value;
+ if(*variable< 0.00001) *variable = 0.0;
+}
extern lmm_system_t maxmin_system;
extern tmgr_history_t history;
extern xbt_dynar_t surf_path;