1 #include "surf_interface.hpp"
2 #include "maxmin_private.hpp"
4 #ifndef SURF_CPU_INTERFACE_HPP_
5 #define SURF_CPU_INTERFACE_HPP_
11 typedef CpuModel *CpuModelPtr;
17 typedef CpuAction *CpuActionPtr;
22 class CpuModel : public Model {
24 CpuModel(const char *name) : Model(name) {};
25 CpuPtr createResource(string name);
26 void updateActionsStateLazy(double now, double delta);
27 void updateActionsStateFull(double now, double delta);
29 virtual void addTraces() =0;
35 class Cpu : public Resource {
38 /*Cpu(lmm_constraint_t constraint);*/
39 Cpu(ModelPtr model, const char *name, xbt_dict_t props,
40 lmm_constraint_t constraint, int core, double powerPeak, double powerScale);
41 Cpu(ModelPtr model, const char *name, xbt_dict_t props,
42 int core, double powerPeak, double powerScale);
44 virtual CpuActionPtr execute(double size)=0;
45 virtual CpuActionPtr sleep(double duration)=0;
46 virtual int getCore();
47 virtual double getSpeed(double load);
48 virtual double getAvailableSpeed();
50 virtual double getCurrentPowerPeak()=0;
51 virtual double getPowerPeakAt(int pstate_index)=0;
52 virtual int getNbPstates()=0;
53 virtual void setPowerPeakAt(int pstate_index)=0;
54 virtual double getConsumedEnergy()=0;
58 double m_powerPeak; /*< CPU power peak */
59 double m_powerScale; /*< Percentage of CPU disponible */
61 /* Note (hypervisor): */
62 lmm_constraint_t *p_constraintCore;
63 void **p_constraintCoreId;
69 class CpuAction : public Action {
72 CpuAction(ModelPtr model, double cost, bool failed)
73 : Action(model, cost, failed) {} //FIXME:REMOVE
74 CpuAction(ModelPtr model, double cost, bool failed, lmm_variable_t var)
75 : Action(model, cost, failed, var) {}
76 virtual void setAffinity(CpuPtr cpu, unsigned long mask);
77 virtual void setBound(double bound);
79 void updateRemainingLazy(double now);
80 virtual void updateEnergy()=0;
84 #endif /* SURF_CPU_INTERFACE_HPP_ */