-
-double generic_share_resources(double now)
-{
- surf_action_cpu_Cas01_im_t action;
- if(cpu_update_mechanism == UM_LAZY)
- return cpu_im_share_resources(now);
- else if (cpu_update_mechanism == UM_FULL)
- {
- return generic_maxmin_share_resources(surf_cpu_model->states.running_action_set,
- xbt_swag_offset(*action, generic_lmm_action.variable),
- cpu_im_maxmin_system, lmm_solve);
- } else {
- xbt_die("Invalide update mechanism!");
- return 0;
- }
-}
-
-static void cpu_update_actions_state(double now, double delta)
-{
- surf_action_cpu_Cas01_im_t action = NULL;
- surf_action_cpu_Cas01_im_t next_action = NULL;
- xbt_swag_t running_actions = surf_cpu_model->states.running_action_set;
- xbt_swag_foreach_safe(action, next_action, running_actions) {
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled()) {
- cpu_Cas01_im_t x =
- lmm_constraint_id(lmm_get_cnst_from_var
- (cpu_maxmin_system, GENERIC_LMM_ACTION(action).variable, 0));
-
- TRACE_surf_host_set_utilization(x->generic_resource.name,
- GENERIC_ACTION(action).data,
- (surf_action_t) action,
- lmm_variable_getvalue
- (GENERIC_LMM_ACTION(action).variable), now - delta,
- delta);
- TRACE_last_timestamp_to_dump = now-delta;
- }
-#endif
- double_update(&(GENERIC_ACTION(action).remains),
- lmm_variable_getvalue(GENERIC_LMM_ACTION(action).variable) * delta);
- if (GENERIC_LMM_ACTION(action).generic_action.max_duration != NO_MAX_DURATION)
- double_update(&(GENERIC_ACTION(action).max_duration), delta);
- if ((GENERIC_ACTION(action).remains <= 0) &&
- (lmm_get_variable_weight(GENERIC_LMM_ACTION(action).variable) > 0)) {
- GENERIC_ACTION(action).finish = surf_get_clock();
- cpu_im_cpu_action_state_set((surf_action_t) action, SURF_ACTION_DONE);
- } else if ((GENERIC_ACTION(action).max_duration != NO_MAX_DURATION) &&
- (GENERIC_ACTION(action).max_duration <= 0)) {
- GENERIC_ACTION(action).finish = surf_get_clock();
- cpu_im_cpu_action_state_set((surf_action_t) action, SURF_ACTION_DONE);
- }
- }
-
- return;
-}
-
-void generic_update_actions_state(double now, double delta)
-{
- if(cpu_update_mechanism == UM_LAZY)
- cpu_im_update_actions_state(now, delta);
- else if(cpu_update_mechanism == UM_FULL)
- {
- cpu_update_actions_state(now, delta);
- }
- else
- xbt_die("Not recognized surf cpu model!");
-}