+void *surf_action_new(size_t size, double cost, surf_model_t model,
+ int failed)
+{
+ surf_action_t action = xbt_malloc0(size);
+ action->refcount = 1;
+ action->cost = cost;
+ action->remains = cost;
+ action->priority = 1.0;
+ action->max_duration = NO_MAX_DURATION;
+ action->start = surf_get_clock();
+ action->finish = -1.0;
+ action->model_type = model;
+#ifdef HAVE_TRACING
+ action->category = NULL;
+#endif
+
+ if (failed)
+ action->state_set = model->states.failed_action_set;
+ else
+ action->state_set = model->states.running_action_set;
+
+ xbt_swag_insert(action, action->state_set);
+
+ return action;
+}
+
+e_surf_action_state_t surf_action_state_get(surf_action_t action)