1 #include "surf_interface.hpp"
2 #include "storage_interface.hpp"
3 #include "cpu_interface.hpp"
4 #include "network_interface.hpp"
6 #ifndef SURF_WORKSTATION_INTERFACE_HPP_
7 #define SURF_WORKSTATION_INTERFACE_HPP_
13 class WorkstationModel;
14 typedef WorkstationModel *WorkstationModelPtr;
17 typedef Workstation *WorkstationPtr;
19 class WorkstationAction;
20 typedef WorkstationAction *WorkstationActionPtr;
25 extern WorkstationModelPtr surf_workstation_model;
30 class WorkstationModel : public Model {
32 WorkstationModel(const char *name);
35 virtual void adjustWeightOfDummyCpuActions();
37 virtual ActionPtr executeParallelTask(int workstation_nb,
38 void **workstation_list,
39 double *computation_amount,
40 double *communication_amount,
42 virtual xbt_dynar_t getRoute(WorkstationPtr src, WorkstationPtr dst)=0;
43 virtual ActionPtr communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate)=0;
45 CpuModelPtr p_cpuModel;
52 class Workstation : public Resource {
55 Workstation(ModelPtr model, const char *name, xbt_dict_t props,
56 xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
57 Workstation(ModelPtr model, const char *name, xbt_dict_t props, lmm_constraint_t constraint,
58 xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
60 xbt_dict_t getProperties();
62 virtual ActionPtr execute(double size)=0;
63 virtual ActionPtr sleep(double duration)=0;
65 virtual int getCore();
66 virtual double getSpeed(double load);
67 virtual double getAvailableSpeed();
68 virtual double getCurrentPowerPeak();
69 virtual double getPowerPeakAt(int pstate_index);
70 virtual int getNbPstates();
71 virtual void setPowerPeakAt(int pstate_index);
72 virtual double getConsumedEnergy();
74 virtual StoragePtr findStorageOnMountList(const char* storage);
75 virtual xbt_dict_t getStorageList();
76 virtual ActionPtr open(const char* mount, const char* path);
77 virtual ActionPtr close(surf_file_t fd);
78 virtual int unlink(surf_file_t fd);
79 virtual ActionPtr ls(const char* mount, const char *path);
80 virtual sg_size_t getSize(surf_file_t fd);
81 virtual ActionPtr read(surf_file_t fd, sg_size_t size);
82 virtual ActionPtr write(surf_file_t fd, sg_size_t size);
83 virtual xbt_dynar_t getInfo( surf_file_t fd);
84 virtual sg_size_t fileTell(surf_file_t fd);
85 virtual sg_size_t getFreeSize(const char* name);
86 virtual sg_size_t getUsedSize(const char* name);
87 virtual int fileSeek(surf_file_t fd, sg_size_t offset, int origin);
89 xbt_dynar_t p_storage;
90 RoutingEdgePtr p_netElm;
92 NetworkLinkPtr p_network;
97 void getParams(ws_params_t params);
98 void setParams(ws_params_t params);
99 s_ws_params_t p_params;
105 class WorkstationAction : public Action {
107 WorkstationAction(ModelPtr model, double cost, bool failed)
108 : Action(model, cost, failed) {}
109 WorkstationAction(ModelPtr model, double cost, bool failed, lmm_variable_t var)
110 : Action(model, cost, failed, var) {}
115 #endif /* SURF_WORKSTATION_INTERFACE_HPP_ */