X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/de74e33ac31948d22f805fed0807be831cb8fdbd..83ff63f9a846dd01995a4bbb8979d2fa909ed34b:/src/surf/cpu.hpp diff --git a/src/surf/cpu.hpp b/src/surf/cpu.hpp index 73ee3d1e8d..c7779e2db6 100644 --- a/src/surf/cpu.hpp +++ b/src/surf/cpu.hpp @@ -12,9 +12,15 @@ typedef CpuModel *CpuModelPtr; class Cpu; typedef Cpu *CpuPtr; +class CpuLmm; +typedef CpuLmm *CpuLmmPtr; + class CpuAction; typedef CpuAction *CpuActionPtr; +class CpuActionLmm; +typedef CpuActionLmm *CpuActionLmmPtr; + /********* * Model * *********/ @@ -22,6 +28,8 @@ class CpuModel : public Model { public: CpuModel(string name) : Model(name) {}; CpuPtr createResource(string name); + void updateActionsStateLazy(double now, double delta); + void updateActionsStateFull(double now, double delta); virtual void addTraces() =0; }; @@ -29,8 +37,9 @@ public: /************ * Resource * ************/ -class Cpu : public Resource { +class Cpu : virtual public Resource { public: + Cpu(){}; Cpu(CpuModelPtr model, const char* name, xbt_dict_t properties) : Resource(model, name, properties) {}; CpuActionPtr execute(double size); CpuActionPtr sleep(double duration); @@ -40,18 +49,37 @@ public: double getAvailableSpeed(); void addTraces(void); + double m_powerPeak; /*< CPU power peak */ + double m_powerScale; /*< Percentage of CPU disponible */ protected: - double m_powerPeak; + int m_core; + //virtual boost::shared_ptr execute(double size) = 0; //virtual boost::shared_ptr sleep(double duration) = 0; }; +class CpuLmm : public ResourceLmm, public Cpu { +public: + CpuLmm(){}; + CpuLmm(CpuModelPtr model, const char* name, xbt_dict_t properties) : ResourceLmm(), Cpu(model, name, properties) {}; + +}; + /********** * Action * **********/ -class CpuAction : public Action { +class CpuAction : virtual public Action { public: + CpuAction(){}; CpuAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {}; }; +class CpuActionLmm : public ActionLmm, public CpuAction { +public: + CpuActionLmm(){}; + CpuActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), CpuAction(model, cost, failed) {}; + void updateRemainingLazy(double now); +}; + + #endif /* SURF_MODEL_CPU_H_ */