/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
if (max_date > 0.0) {
xbt_assert(max_date > NOW,"You asked to simulate up to %f, but that's in the past already", max_date);
if (max_date > 0.0) {
xbt_assert(max_date > NOW,"You asked to simulate up to %f, but that's in the past already", max_date);
next_event_date = future_evt_set->next_date();
XBT_DEBUG("Next TRACE event: %f", next_event_date);
next_event_date = future_evt_set->next_date();
XBT_DEBUG("Next TRACE event: %f", next_event_date);
if (next_event_date!=-1.0 && time_delta!=-1.0) {
time_delta = MIN(next_event_date - NOW, time_delta);
} else {
if (next_event_date!=-1.0 && time_delta!=-1.0) {
time_delta = MIN(next_event_date - NOW, time_delta);
} else {
/* FIXME: Moved this test to here to avoid stopping simulation if there are actions running on cpus and all cpus are with availability = 0.
* This may cause an infinite loop if one cpu has a trace with periodicity = 0 and the other a trace with periodicity > 0.
* The options are: all traces with same periodicity(0 or >0) or we need to change the way how the events are managed */
/* FIXME: Moved this test to here to avoid stopping simulation if there are actions running on cpus and all cpus are with availability = 0.
* This may cause an infinite loop if one cpu has a trace with periodicity = 0 and the other a trace with periodicity > 0.
* The options are: all traces with same periodicity(0 or >0) or we need to change the way how the events are managed */
for (auto model : *all_existing_models) {
model->updateActionsState(NOW, time_delta);
}
for (auto model : *all_existing_models) {
model->updateActionsState(NOW, time_delta);
}
- if (model->getFailedActionSet()->empty())
- return nullptr;
- surf_action_t res = &model->getFailedActionSet()->front();
- model->getFailedActionSet()->pop_front();
- return res;
+ return ActionListExtract(model->getFailedActionSet());
- return static_cast<simgrid::surf::Storage*>(surf_storage_resource_priv(resource))->attach_;
+ return static_cast<simgrid::surf::StorageImpl*>(surf_storage_resource_priv(resource))->attach_;
+}
+
+const char* surf_storage_get_name(surf_resource_t resource){
+ return static_cast<simgrid::surf::StorageImpl*>(surf_storage_resource_priv(resource))->cname();