- CpuAction(){};
- CpuAction(ModelPtr model, double cost, bool failed)
- : Action(model, cost, failed) {} //FIXME:REMOVE
- CpuAction(ModelPtr model, double cost, bool failed, lmm_variable_t var)
- : Action(model, cost, failed, var) {}
- virtual void setAffinity(CpuPtr cpu, unsigned long mask);
- virtual void setBound(double bound);
-
- void updateRemainingLazy(double now);
- virtual void updateEnergy()=0;
- double m_bound;
+ /** @brief Signal emitted when the action state changes (ready/running/done, etc)
+ * Signature: `void(CpuAction *action, simgrid::surf::Action::State previous)`
+ */
+ static simgrid::xbt::signal<void(simgrid::surf::CpuAction*, simgrid::surf::Action::State)> onStateChange;
+ /** @brief Signal emitted when the action share changes (amount of flops it gets)
+ * Signature: `void(CpuAction *action)`
+ */
+ static simgrid::xbt::signal<void(simgrid::surf::CpuAction*)> onShareChange;
+
+ CpuAction(simgrid::surf::Model* model, double cost, bool failed) : Action(model, cost, failed) {}
+ CpuAction(simgrid::surf::Model * model, double cost, bool failed, kernel::lmm::Variable* var)
+ : Action(model, cost, failed, var)
+ {
+ }
+
+ void setState(simgrid::surf::Action::State state) override;
+
+ void updateRemainingLazy(double now) override;
+ std::list<Cpu*> cpus();
+
+ void suspend() override;
+ void resume() override;