Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix NS3 and latency bound tracking
[simgrid.git] / src / surf / surf_interface.hpp
index cd55b2a..c68f912 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2004-2013. The SimGrid Team.
+/* Copyright (c) 2004-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -63,6 +63,8 @@ XBT_PUBLIC(double) surf_get_clock(void);
 extern double sg_sender_gap;
 XBT_PUBLIC(int)  SURF_CPU_LEVEL;    //Surf cpu level
 
+extern surf_callback(void, void) surfExitCallbacks;
+
 int __surf_is_absolute_file_path(const char *file_path);
 
 /***********
@@ -197,7 +199,7 @@ public:
    * @brief share the resources
    * @details Share the resources between the actions 
    * 
-   * @param 
+   * @param now [TODO]
    * @return the date of the next action will finish
    */
   virtual double shareResources(double now);
@@ -360,15 +362,13 @@ public:
    */
   virtual void setState(e_surf_resource_state_t state);
 
-protected:
-  e_surf_resource_state_t m_stateCurrent;
-
 private:
-  ModelPtr p_model;
   const char *p_name;
   xbt_dict_t p_properties;
+  ModelPtr p_model;
   void *p_resource;
   bool m_running;
+  e_surf_resource_state_t m_stateCurrent;
 
   /* LMM */
 public:
@@ -439,14 +439,21 @@ public:
    * 
    * @param state The new state of the current Action
    */
-  virtual void setState(e_surf_action_state_t state); /**< Change state*/
+  virtual void setState(e_surf_action_state_t state);
 
   /**
    * @brief Get the bound of the current Action
    * 
    * @return The bound of the current Action
    */
-  double getBound() {return m_bound;}
+  double getBound();
+
+  /**
+   * @brief Set the bound of the current Action
+   *
+   * @param bound The new bound of the current Action
+   */
+  void setBound(double bound);
 
   /**
    * @brief Get the start time of the current action
@@ -609,15 +616,6 @@ public:
    */
   double getRemainsNoUpdate();
 
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-  /**
-   * @brief Check if the action is limited by latency.
-   * 
-   * @return 1 if action is limited by latency, 0 otherwise
-   */
-  int getLatencyLimited();
-#endif
-
   /**
    * @brief Get the priority of the current Action
    * 
@@ -681,8 +679,6 @@ private:
   ActionLmmListPtr p_modifiedSet;
   xbt_heap_t p_actionHeap;
   int m_selectiveUpdate;
-  ModelPtr p_model;
-  double m_bound;   /**< the capping of the CPU use  */
   bool m_failed;
   double m_start; /**< start time  */
   char *p_category;               /**< tracing category for categorized resource utilization monitoring */
@@ -690,7 +686,8 @@ private:
   #ifdef HAVE_LATENCY_BOUND_TRACKING
   int m_latencyLimited;               /**< Set to 1 if is limited by latency, 0 otherwise */
   #endif
-  int    m_cost;
+  double    m_cost;
+  ModelPtr p_model;
   void *p_data; /**< for your convenience */
 
   /* LMM */
@@ -708,8 +705,8 @@ public:
 
 protected:
   lmm_variable_t p_variable;
-  double m_lastUpdate;
   double m_lastValue;
+  double m_lastUpdate;
   int m_suspended;
   int m_indexHeap;
   enum heap_action_type m_hat;