Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
73ee3d1e8d52e283e545c9224672ff580715b53f
[simgrid.git] / src / surf / cpu.hpp
1 #include "surf.hpp"
2
3 #ifndef SURF_MODEL_CPU_H_
4 #define SURF_MODEL_CPU_H_
5
6 /***********
7  * Classes *
8  ***********/
9 class CpuModel;
10 typedef CpuModel *CpuModelPtr;
11
12 class Cpu;
13 typedef Cpu *CpuPtr;
14
15 class CpuAction;
16 typedef CpuAction *CpuActionPtr;
17
18 /*********
19  * Model *
20  *********/
21 class CpuModel : public Model {
22 public:
23   CpuModel(string name) : Model(name) {};
24   CpuPtr createResource(string name);
25
26   virtual void addTraces() =0;
27 };
28
29 /************
30  * Resource *
31  ************/
32 class Cpu : public Resource {
33 public:
34   Cpu(CpuModelPtr model, const char* name, xbt_dict_t properties) : Resource(model, name, properties) {};
35   CpuActionPtr execute(double size);
36   CpuActionPtr sleep(double duration);
37   e_surf_resource_state_t getState();
38   int getCore();
39   double getSpeed(double load);
40   double getAvailableSpeed();
41   void addTraces(void);
42
43 protected:
44   double m_powerPeak;
45   //virtual boost::shared_ptr<Action> execute(double size) = 0;
46   //virtual boost::shared_ptr<Action> sleep(double duration) = 0;
47 };
48
49 /**********
50  * Action *
51  **********/
52 class CpuAction : public Action {
53 public:
54   CpuAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
55 };
56
57 #endif /* SURF_MODEL_CPU_H_ */