-static void cpu_update_actions_state_lazy(double now, double delta)
-{
- surf_action_cpu_Cas01_t action;
- while ((xbt_heap_size(cpu_action_heap) > 0)
- && (double_equals(xbt_heap_maxkey(cpu_action_heap), now))) {
- action = xbt_heap_pop(cpu_action_heap);
- XBT_DEBUG("Action %p: finish", action);
- GENERIC_ACTION(action).finish = surf_get_clock();
- /* set the remains to 0 due to precision problems when updating the remaining amount */
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled()) {
- cpu_Cas01_t cpu = ((cpu_Cas01_t) (action->cpu));
- TRACE_surf_host_set_utilization(cpu->generic_resource.name,
- GENERIC_LMM_ACTION(action).
- generic_action.data,
- (surf_action_t) action,
- lmm_variable_getvalue
- (GENERIC_LMM_ACTION(action).
- variable), cpu->last_update,
- now - cpu->last_update);
- }
-#endif
- GENERIC_ACTION(action).remains = 0;
- cpu_action_state_set((surf_action_t) action, SURF_ACTION_DONE);
-// heap_remove(action); //FIXME heap
- }
-#ifdef HAVE_TRACING
- if (TRACE_is_enabled()) {
- //defining the last timestamp that we can safely dump to trace file
- //without losing the event ascending order (considering all CPU's)
- void **data;
- cpu_Cas01_t cpu;
- xbt_lib_cursor_t cursor;
- char *key;
- double smaller = -1;
- xbt_lib_foreach(host_lib, cursor, key, data) {
- if (data[SURF_CPU_LEVEL]) {
- cpu = data[SURF_CPU_LEVEL];
- if (smaller < 0) {
- smaller = cpu->last_update;
- continue;
- }
- if (cpu->last_update < smaller) {
- smaller = cpu->last_update;
- }
- }
- }
- if (smaller > 0) {
- TRACE_last_timestamp_to_dump = smaller;
- }
- }
-#endif
- return;
-}