deltap -= action->latency;
action->latency = 0.0;
}
- if (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 -=
return (surf_action_t) action;
}
+static void action_suspend(surf_action_t action)
+{
+ ((surf_action_network_t) action)->suspended = 1;
+ lmm_update_variable_weight(maxmin_system,
+ ((surf_action_network_t) action)->variable, 0.0);
+}
+
+static void action_resume(surf_action_t action)
+{
+ lmm_update_variable_weight(maxmin_system,
+ ((surf_action_network_t) action)->variable, 1.0);
+ ((surf_action_network_t) action)->suspended = 0;
+}
+
+static int action_is_suspended(surf_action_t action)
+{
+ return ((surf_action_network_t) action)->suspended;
+}
+
static void finalize(void)
{
int i,j;
surf_network_resource->common_private->finalize = finalize;
surf_network_resource->extension_public->communicate = communicate;
+ surf_network_resource->extension_public->suspend = action_suspend;
+ surf_network_resource->extension_public->resume = action_resume;
+ surf_network_resource->extension_public->is_suspended = action_is_suspended;
network_link_set = xbt_dict_new();
network_card_set = xbt_dict_new();