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;
20 typedef WorkstationLmm *WorkstationLmmPtr;
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(const char *name);
41 virtual void adjustWeightOfDummyCpuActions();
43 virtual ActionPtr executeParallelTask(int workstation_nb,
44 void **workstation_list,
45 double *computation_amount,
46 double *communication_amount,
48 virtual xbt_dynar_t getRoute(WorkstationPtr src, WorkstationPtr dst)=0;
49 virtual ActionPtr communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate)=0;
51 CpuModelPtr p_cpuModel;
58 class Workstation : virtual public Resource {
61 Workstation(xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
63 xbt_dict_t getProperties();
65 virtual ActionPtr execute(double size)=0;
66 virtual ActionPtr sleep(double duration)=0;
68 virtual int getCore();
69 virtual double getSpeed(double load);
70 virtual double getAvailableSpeed();
71 virtual double getCurrentPowerPeak();
72 virtual double getPowerPeakAt(int pstate_index);
73 virtual int getNbPstates();
74 virtual void setPowerPeakAt(int pstate_index);
75 virtual double getConsumedEnergy();
77 virtual StoragePtr findStorageOnMountList(const char* storage);
78 virtual xbt_dict_t getStorageList();
79 virtual ActionPtr open(const char* mount, const char* path);
80 virtual ActionPtr close(surf_file_t fd);
81 virtual int unlink(surf_file_t fd);
82 virtual ActionPtr ls(const char* mount, const char *path);
83 virtual sg_size_t getSize(surf_file_t fd);
84 virtual ActionPtr read(surf_file_t fd, sg_size_t size);
85 virtual ActionPtr write(surf_file_t fd, sg_size_t size);
86 virtual xbt_dynar_t getInfo( surf_file_t fd);
87 virtual sg_size_t fileTell(surf_file_t fd);
88 virtual sg_size_t getFreeSize(const char* name);
89 virtual sg_size_t getUsedSize(const char* name);
90 virtual int fileSeek(surf_file_t fd, sg_size_t offset, int origin);
92 xbt_dynar_t p_storage;
93 RoutingEdgePtr p_netElm;
95 NetworkLinkPtr p_network;
100 void getParams(ws_params_t params);
101 void setParams(ws_params_t params);
102 s_ws_params_t p_params;
105 class WorkstationLmm : virtual public Workstation, public ResourceLmm {
113 class WorkstationAction : virtual public Action {
115 WorkstationAction() {};
118 class WorkstationActionLmm : public ActionLmm, public WorkstationAction {
120 WorkstationActionLmm(): ActionLmm(), WorkstationAction() {};
124 #endif /* SURF_WORKSTATION_INTERFACE_HPP_ */