/* 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. */
/* 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());