Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix Memleaks
[simgrid.git] / src / surf / workstation.hpp
index 675cfad..8ce487e 100644 (file)
@@ -22,8 +22,8 @@ typedef WorkstationCLM03Lmm *WorkstationCLM03LmmPtr;
 class WorkstationAction;
 typedef WorkstationAction *WorkstationActionPtr;
 
-/*FIXME:class WorkstationActionLmm;
-typedef WorkstationActionLmm *WorkstationActionLmmPtr;*/
+class WorkstationActionLmm;
+typedef WorkstationActionLmm *WorkstationActionLmmPtr;
 
 /*********
  * Tools *
@@ -41,6 +41,8 @@ public:
   virtual void parseInit(sg_platf_host_cbarg_t host);
   WorkstationCLM03Ptr createResource(string name);
   double shareResources(double now);
+  virtual void adjustWeightOfDummyCpuActions();
+
   void updateActionsState(double now, double delta);
 
   virtual ActionPtr executeParallelTask(int workstation_nb,
@@ -50,6 +52,7 @@ public:
                                         double rate);
  virtual xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
  virtual ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
+ CpuModelPtr p_cpuModel;
 };
 
 /************
@@ -69,26 +72,43 @@ public:
   virtual int getCore();
   virtual double getSpeed(double load);
   virtual double getAvailableSpeed();
+  virtual double getCurrentPowerPeak();
+  virtual double getPowerPeakAt(int pstate_index);
+  virtual int getNbPstates();
+  virtual void setPowerPeakAt(int pstate_index);
+  virtual double getConsumedEnergy();
 
   xbt_dict_t getProperties();
 
   StoragePtr findStorageOnMountList(const char* storage);
+  xbt_dict_t getStorageList();
   ActionPtr open(const char* mount, const char* path);
   ActionPtr close(surf_file_t fd);
   int unlink(surf_file_t fd);
   ActionPtr ls(const char* mount, const char *path);
-  size_t getSize(surf_file_t fd);
-  ActionPtr read(void* ptr, size_t size, surf_file_t fd);
-  ActionPtr write(const void* ptr, size_t size, surf_file_t fd);
+  sg_size_t getSize(surf_file_t fd);
+  ActionPtr read(surf_file_t fd, sg_size_t size);
+  ActionPtr write(surf_file_t fd, sg_size_t size);
+  xbt_dynar_t getInfo( surf_file_t fd);
+  sg_size_t getFreeSize(const char* name);
+  sg_size_t getUsedSize(const char* name);
+
   bool isUsed();
   //bool isShared();
   xbt_dynar_t p_storage;
   RoutingEdgePtr p_netElm;
   CpuPtr p_cpu;
   NetworkCm02LinkPtr p_network;
+
+  xbt_dynar_t getVms();
+
+  /* common with vm */
+  void getParams(ws_params_t params);
+  void setParams(ws_params_t params);
+  s_ws_params_t p_params;
 };
 
-class WorkstationCLM03Lmm : public WorkstationCLM03, public ResourceLmm {
+class WorkstationCLM03Lmm : virtual public WorkstationCLM03, public ResourceLmm {
 public:
   WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t props, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu):
          WorkstationCLM03(model, name, props, storage, netElm, cpu){};