Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill the s_surf_parsing_link_up_down_t datatype
[simgrid.git] / src / surf / surf_interface.cpp
index 24577af..b0ac64c 100644 (file)
@@ -5,7 +5,6 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "surf_interface.hpp"
-#include "VirtualMachineImpl.hpp"
 #include "cpu_interface.hpp"
 #include "mc/mc.h"
 #include "network_interface.hpp"
 #include "simgrid/sg_config.h"
 #include "src/instr/instr_private.h" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals
 #include "src/internal_config.h"
+#include "src/kernel/routing/NetCard.hpp"
 #include "src/simix/smx_host_private.h"
 #include "src/surf/HostImpl.hpp"
 #include "surf_private.h"
-#include "surf_routing.hpp"
 #include <vector>
 
 XBT_LOG_NEW_CATEGORY(surf, "All SURF categories");
@@ -100,11 +99,6 @@ s_surf_model_description_t surf_host_model_description[] = {
   {nullptr, nullptr, nullptr}      /* this array must be nullptr terminated */
 };
 
-s_surf_model_description_t surf_vm_model_description[] = {
-  {"default", "Default vm model.", &surf_vm_model_init_HL13},
-  {nullptr, nullptr, nullptr}      /* this array must be nullptr terminated */
-};
-
 s_surf_model_description_t surf_optimization_mode_description[] = {
   {"Lazy", "Lazy action management (partial invalidation in lmm + heap in action remaining).", nullptr},
   {"TI",   "Trace integration. Highly optimized mode when using availability traces (only available for the Cas01 CPU model for now).", nullptr},
@@ -345,7 +339,6 @@ void surf_exit()
     delete model;
   delete all_existing_models;
   xbt_dynar_free(&model_list_invoke);
-  routing_exit();
 
   simgrid::surf::surfExitCallbacks();
 
@@ -745,9 +738,14 @@ void Action::suspend()
   XBT_IN("(%p)", this);
   if (suspended_ != 2) {
     lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), 0.0);
-    suspended_ = 1;
-    if (getModel()->getUpdateMechanism() == UM_LAZY)
+    if (getModel()->getUpdateMechanism() == UM_LAZY){
       heapRemove(getModel()->getActionHeap());
+      if (getModel()->getUpdateMechanism() == UM_LAZY  && stateSet_ == getModel()->getRunningActionSet() && priority_ > 0){
+        //If we have a lazy model, we need to update the remaining value accordingly
+        updateRemainingLazy(surf_get_clock());
+      }
+    }
+    suspended_ = 1;
   }
   XBT_OUT();
 }