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 void parseInit(sg_platf_host_cbarg_t host);
42 WorkstationCLM03Ptr createResource(string name);
43 double shareResources(double now);
44 void updateActionsState(double now, double delta);
46 ActionPtr executeParallelTask(int workstation_nb,
47 void **workstation_list,
48 double *computation_amount,
49 double *communication_amount,
51 xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
52 ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
59 class WorkstationCLM03 : virtual public Resource {
61 WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
63 void updateState(tmgr_trace_event_t event_type, double value, double date);
65 ActionPtr execute(double size);
66 ActionPtr sleep(double duration);
67 e_surf_resource_state_t getState();
70 double getSpeed(double load);
71 double getAvailableSpeed();
73 xbt_dict_t getProperties();
75 StoragePtr findStorageOnMountList(const char* storage);
76 ActionPtr open(const char* mount, const char* path);
77 ActionPtr close(surf_file_t fd);
78 int unlink(surf_file_t fd);
79 ActionPtr ls(const char* mount, const char *path);
80 size_t getSize(surf_file_t fd);
81 ActionPtr read(void* ptr, size_t size, surf_file_t fd);
82 ActionPtr write(const void* ptr, size_t size, surf_file_t fd);
85 xbt_dynar_t p_storage;
86 RoutingEdgePtr p_netElm;
88 NetworkCm02LinkPtr p_network;
91 class WorkstationCLM03Lmm : public WorkstationCLM03, public ResourceLmm {
93 WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t props): WorkstationCLM03(model, name, props, NULL, NULL, NULL){};
94 e_surf_resource_state_t getState();
100 class WorkstationAction : virtual public Action {
102 WorkstationAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
105 class WorkstationActionLmm : public ActionLmm, public WorkstationAction {
107 WorkstationActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), WorkstationAction(model, cost, failed) {};
111 #endif /* WORKSTATION_HPP_ */