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 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);
55 CpuModelPtr p_cpuModel;
62 class WorkstationCLM03 : virtual public Resource {
64 WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
66 void updateState(tmgr_trace_event_t event_type, double value, double date);
68 virtual ActionPtr execute(double size);
69 virtual ActionPtr sleep(double duration);
70 e_surf_resource_state_t getState();
72 virtual int getCore();
73 virtual double getSpeed(double load);
74 virtual double getAvailableSpeed();
75 virtual double getCurrentPowerPeak();
76 virtual double getPowerPeakAt(int pstate_index);
77 virtual int getNbPstates();
78 virtual void setPowerPeakAt(int pstate_index);
79 virtual double getConsumedEnergy();
81 xbt_dict_t getProperties();
83 StoragePtr findStorageOnMountList(const char* storage);
84 xbt_dict_t getStorageList();
85 ActionPtr open(const char* mount, const char* path);
86 ActionPtr close(surf_file_t fd);
87 int unlink(surf_file_t fd);
88 ActionPtr ls(const char* mount, const char *path);
89 sg_size_t getSize(surf_file_t fd);
90 ActionPtr read(surf_file_t fd, sg_size_t size);
91 ActionPtr write(surf_file_t fd, sg_size_t size);
92 xbt_dynar_t getInfo( surf_file_t fd);
93 sg_size_t fileTell(surf_file_t fd);
94 sg_size_t getFreeSize(const char* name);
95 sg_size_t getUsedSize(const char* name);
99 xbt_dynar_t p_storage;
100 RoutingEdgePtr p_netElm;
102 NetworkCm02LinkPtr p_network;
104 xbt_dynar_t getVms();
107 void getParams(ws_params_t params);
108 void setParams(ws_params_t params);
109 s_ws_params_t p_params;
112 class WorkstationCLM03Lmm : virtual public WorkstationCLM03, public ResourceLmm {
114 WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t props, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu):
115 WorkstationCLM03(model, name, props, storage, netElm, cpu){};
116 e_surf_resource_state_t getState();
122 class WorkstationAction : virtual public Action {
124 WorkstationAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
127 class WorkstationActionLmm : public ActionLmm, public WorkstationAction {
129 WorkstationActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), WorkstationAction(model, cost, failed) {};
133 #endif /* WORKSTATION_HPP_ */