6 #ifndef WORKSTATION_HPP_
7 #define WORKSTATION_HPP_
13 class WorkstationModel;
14 typedef WorkstationModel *WorkstationModelPtr;
16 class WorkstationCLM03;
17 typedef WorkstationCLM03 *WorkstationCLM03Ptr;
19 class WorkstationCLM03Lmm;
20 typedef WorkstationCLM03Lmm *WorkstationCLM03LmmPtr;
22 class WorkstationAction;
23 typedef WorkstationAction *WorkstationActionPtr;
25 /*FIXME:class WorkstationActionLmm;
26 typedef WorkstationActionLmm *WorkstationActionLmmPtr;*/
31 extern WorkstationModelPtr surf_workstation_model;
36 class WorkstationModel : public Model {
38 WorkstationModel(string name): Model(name) {};
41 virtual void parseInit(sg_platf_host_cbarg_t host);
42 WorkstationCLM03Ptr createResource(string name);
43 double shareResources(double now);
44 virtual void adjustWeightOfDummyCpuActions();
46 void updateActionsState(double now, double delta);
48 virtual ActionPtr executeParallelTask(int workstation_nb,
49 void **workstation_list,
50 double *computation_amount,
51 double *communication_amount,
53 virtual xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
54 virtual ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
61 class WorkstationCLM03 : virtual public Resource {
63 WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
65 void updateState(tmgr_trace_event_t event_type, double value, double date);
67 virtual ActionPtr execute(double size);
68 virtual ActionPtr sleep(double duration);
69 e_surf_resource_state_t getState();
71 virtual int getCore();
72 virtual double getSpeed(double load);
73 virtual double getAvailableSpeed();
74 virtual double getCurrentPowerPeak();
75 virtual double getPowerPeakAt(int pstate_index);
76 virtual int getNbPstates();
77 virtual void setPowerPeakAt(int pstate_index);
78 virtual double getConsumedEnergy();
80 xbt_dict_t getProperties();
82 StoragePtr findStorageOnMountList(const char* storage);
83 xbt_dict_t getStorageList();
84 ActionPtr open(const char* mount, const char* path);
85 ActionPtr close(surf_file_t fd);
86 int unlink(surf_file_t fd);
87 ActionPtr ls(const char* mount, const char *path);
88 sg_storage_size_t getSize(surf_file_t fd);
89 ActionPtr read(surf_file_t fd, sg_storage_size_t size);
90 ActionPtr write(surf_file_t fd, sg_storage_size_t size);
91 xbt_dynar_t getInfo( surf_file_t fd);
92 sg_storage_size_t getFreeSize(const char* name);
93 sg_storage_size_t getUsedSize(const char* name);
97 xbt_dynar_t p_storage;
98 RoutingEdgePtr p_netElm;
100 NetworkCm02LinkPtr p_network;
102 xbt_dynar_t getVms();
105 void getParams(ws_params_t params);
106 void setParams(ws_params_t params);
107 s_ws_params_t p_params;
110 class WorkstationCLM03Lmm : virtual public WorkstationCLM03, public ResourceLmm {
112 WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t props, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu):
113 WorkstationCLM03(model, name, props, storage, netElm, cpu){};
114 e_surf_resource_state_t getState();
120 class WorkstationAction : virtual public Action {
122 WorkstationAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
125 class WorkstationActionLmm : public ActionLmm, public WorkstationAction {
127 WorkstationActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), WorkstationAction(model, cost, failed) {};
131 #endif /* WORKSTATION_HPP_ */