#include "ptask_L07.hpp"
#include "cpu_interface.hpp"
+#include "xbt/utility.hpp"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_host);
XBT_LOG_EXTERNAL_CATEGORY(xbt_cfg);
namespace surf {
HostL07Model::HostL07Model() : HostModel() {
- maxminSystem_ = new s_lmm_system_t(true /* lazy */);
- maxminSystem_->solve_fun = &bottleneck_solve;
+ maxminSystem_ = new simgrid::kernel::lmm::System(true /* lazy */);
+ maxminSystem_->solve_fun = &simgrid::kernel::lmm::bottleneck_solve;
surf_network_model = new NetworkL07Model(this,maxminSystem_);
surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_);
}
HostL07Model::~HostL07Model()
{
- delete maxminSystem_;
- maxminSystem_ = nullptr;
delete surf_network_model;
delete surf_cpu_model_pm;
}
-CpuL07Model::CpuL07Model(HostL07Model *hmodel,lmm_system_t sys)
- : CpuModel()
- , hostModel_(hmodel)
+CpuL07Model::CpuL07Model(HostL07Model* hmodel, lmm_system_t sys) : CpuModel(), hostModel_(hmodel)
{
maxminSystem_ = sys;
}
maxminSystem_ = nullptr;
}
-NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys)
- : NetworkModel()
- , hostModel_(hmodel)
+NetworkL07Model::NetworkL07Model(HostL07Model* hmodel, lmm_system_t sys) : NetworkModel(), hostModel_(hmodel)
{
maxminSystem_ = sys;
loopback_ = NetworkL07Model::createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE);
}
}
XBT_DEBUG("Action (%p) : remains (%g) updated by %g.", &action, action.getRemains(),
- lmm_variable_getvalue(action.getVariable()) * delta);
- action.updateRemains(lmm_variable_getvalue(action.getVariable()) * delta);
+ action.getVariable()->get_value() * delta);
+ action.updateRemains(action.getVariable()->get_value() * delta);
if (action.getMaxDuration() > NO_MAX_DURATION)
action.updateMaxDuration(delta);
* If it's not done, it may have failed.
*/
- if (((action.getRemains() <= 0) && (lmm_get_variable_weight(action.getVariable()) > 0)) ||
+ if (((action.getRemains() <= 0) && (action.getVariable()->get_weight() > 0)) ||
((action.getMaxDuration() > NO_MAX_DURATION) && (action.getMaxDuration() <= 0))) {
action.finish(Action::State::done);
} else {
/* Need to check that none of the model has failed */
int i = 0;
- lmm_constraint_t cnst = lmm_get_cnst_from_var(maxminSystem_, action.getVariable(), i);
+ lmm_constraint_t cnst = action.getVariable()->get_constraint(i);
while (cnst != nullptr) {
i++;
- void *constraint_id = lmm_constraint_id(cnst);
+ void* constraint_id = cnst->get_id();
if (static_cast<simgrid::surf::Resource*>(constraint_id)->isOff()) {
XBT_DEBUG("Action (%p) Failed!!", &action);
action.finish(Action::State::failed);
break;
}
- cnst = lmm_get_cnst_from_var(maxminSystem_, action.getVariable(), i);
+ cnst = action.getVariable()->get_constraint(i);
}
}
}
latency_.peak = latency;
if (policy == SURF_LINK_FATPIPE)
- lmm_constraint_shared(constraint());
+ constraint()->unshare();
s4u::Link::onCreation(this->piface_);
}
{
L07Action *action = static_cast<L07Action*>(execution_start(1.0));
action->setMaxDuration(duration);
- action->suspended_ = 2;
+ action->suspended_ = Action::SuspendStates::sleeping;
model()->getMaxminSystem()->update_variable_weight(action->getVariable(), 0.0);
return action;
/** @brief take into account changes of speed (either load or max) */
void CpuL07::onSpeedChange() {
- lmm_variable_t var = nullptr;
- lmm_element_t elem = nullptr;
+ lmm_variable_t var = nullptr;
+ const_lmm_element_t elem = nullptr;
model()->getMaxminSystem()->update_constraint_bound(constraint(), speed_.peak * speed_.scale);
- while ((var = lmm_get_var_from_cnst(model()->getMaxminSystem(), constraint(), &elem))) {
- Action* action = static_cast<Action*>(lmm_variable_id(var));
+ while ((var = constraint()->get_variable(&elem))) {
+ Action* action = static_cast<Action*>(var->get_id());
model()->getMaxminSystem()->update_variable_bound(action->getVariable(), speed_.scale * speed_.peak);
}
{
lmm_variable_t var = nullptr;
L07Action *action;
- lmm_element_t elem = nullptr;
+ const_lmm_element_t elem = nullptr;
latency_.peak = value;
- while ((var = lmm_get_var_from_cnst(model()->getMaxminSystem(), constraint(), &elem))) {
- action = static_cast<L07Action*>(lmm_variable_id(var));
+ while ((var = constraint()->get_variable(&elem))) {
+ action = static_cast<L07Action*>(var->get_id());
action->updateBound();
}
}
}
double lat_bound = sg_tcp_gamma / (2.0 * lat_current);
XBT_DEBUG("action (%p) : lat_bound = %g", this, lat_bound);
- if ((latency_ <= 0.0) && (suspended_ == 0)) {
+ if ((latency_ <= 0.0) && (suspended_ == Action::SuspendStates::not_suspended)) {
if (rate_ < 0)
getModel()->getMaxminSystem()->update_variable_bound(getVariable(), lat_bound);
else
refcount_--;
if (not refcount_) {
if (action_hook.is_linked())
- stateSet_->erase(stateSet_->iterator_to(*this));
+ simgrid::xbt::intrusive_erase(*stateSet_, *this);
if (getVariable())
getModel()->getMaxminSystem()->variable_free(getVariable());
delete this;