Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[travis] detect linux as we should
[simgrid.git] / src / surf / vm_hl13.hpp
1 /* Copyright (c) 2013-2015. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "host_clm03.hpp"
8 #include "vm_interface.hpp"
9
10 #ifndef SURF_VM_HPP_
11 #define SURF_VM_HPP_
12
13 #define GUESTOS_NOISE 100 // This value corresponds to the cost of the global action associated to the VM
14                           // It corresponds to the cost of a VM running no tasks.
15
16 /***********
17  * Classes *
18  ***********/
19
20 class VMHL13Model;
21 class VMHL13;
22
23 /*********
24  * Model *
25  *********/
26 class VMHL13Model : public VMModel {
27 public:
28   VMHL13Model();
29   ~VMHL13Model(){};
30
31   VM *createVM(const char *name, surf_resource_t host_PM);
32   double shareResources(double now);
33   void adjustWeightOfDummyCpuActions() {};
34   Action *executeParallelTask(int host_nb,
35                               sg_host_t *host_list,
36                                                           double *flops_amount,
37                                                           double *bytes_amount,
38                                                           double rate);
39   void updateActionsState(double /*now*/, double /*delta*/);
40 };
41
42 /************
43  * Resource *
44  ************/
45
46 class VMHL13 : public VM {
47 public:
48   VMHL13(VMModel *model, const char* name, xbt_dict_t props, surf_resource_t host_PM);
49   ~VMHL13();
50
51   void suspend();
52   void resume();
53
54   void save();
55   void restore();
56
57   void migrate(surf_resource_t ind_dst_pm);
58
59   e_surf_resource_state_t getState();
60   void setState(e_surf_resource_state_t state);
61
62   surf_resource_t getPm(); // will be vm_ws_get_pm()
63
64   void setBound(double bound);
65   void setAffinity(Cpu *cpu, unsigned long mask);
66
67   //FIXME: remove
68   void updateState(tmgr_trace_event_t event_type, double value, double date);
69   bool isUsed();
70
71   Action *execute(double size);
72   Action *sleep(double duration);
73 };
74
75 /**********
76  * Action *
77  **********/
78
79 #endif /* SURF_VM_HPP_ */