Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge simgrid::Host into simgrid::s4u::Host
[simgrid.git] / src / simix / smx_global.cpp
index 3ba0e93..6acc54c 100644 (file)
@@ -11,6 +11,7 @@
 # include <sys/ptrace.h>
 #endif
 
+#include "src/surf/surf_interface.hpp"
 #include "smx_private.h"
 #include "smx_private.hpp"
 #include "xbt/heap.h"
@@ -230,7 +231,9 @@ void SIMIX_global_init(int *argc, char **argv)
     /* register a function to be called by SURF after the environment creation */
     sg_platf_init();
     sg_platf_postparse_add_cb(SIMIX_post_create_environment);
-    surf_on_host_created(SIMIX_host_create);
+    simgrid::s4u::Host::onCreation.connect([](simgrid::s4u::Host& host) {
+      SIMIX_host_create(&host);
+    });
     surf_on_storage_created(SIMIX_storage_create_);
 
   }
@@ -462,15 +465,15 @@ void SIMIX_run(void)
         XBT_DEBUG("Handling process whose action failed");
         while ((action = surf_model_extract_failed_action_set(model))) {
           XBT_DEBUG("   Handling Action %p",action);
-          SIMIX_simcall_exit((smx_synchro_t) surf_action_get_data(action));
+          SIMIX_simcall_exit((smx_synchro_t) action->getData());
         }
         XBT_DEBUG("Handling process whose action terminated normally");
         while ((action = surf_model_extract_done_action_set(model))) {
           XBT_DEBUG("   Handling Action %p",action);
-          if (surf_action_get_data(action) == NULL)
+          if (action->getData() == NULL)
             XBT_DEBUG("probably vcpu's action %p, skip", action);
           else
-            SIMIX_simcall_exit((smx_synchro_t) surf_action_get_data(action));
+            SIMIX_simcall_exit((smx_synchro_t) action->getData());
         }
       }
     }
@@ -500,15 +503,15 @@ void SIMIX_run(void)
       XBT_DEBUG("Handling process whose action failed");
       while ((action = surf_model_extract_failed_action_set(model))) {
         XBT_DEBUG("   Handling Action %p",action);
-        SIMIX_simcall_exit((smx_synchro_t) surf_action_get_data(action));
+        SIMIX_simcall_exit((smx_synchro_t) action->getData());
       }
       XBT_DEBUG("Handling process whose action terminated normally");
       while ((action = surf_model_extract_done_action_set(model))) {
         XBT_DEBUG("   Handling Action %p",action);
-        if (surf_action_get_data(action) == NULL)
+        if (action->getData() == NULL)
           XBT_DEBUG("probably vcpu's action %p, skip", action);
         else
-          SIMIX_simcall_exit((smx_synchro_t) surf_action_get_data(action));
+          SIMIX_simcall_exit((smx_synchro_t) action->getData());
       }
     }
 
@@ -698,3 +701,8 @@ xbt_dict_t SIMIX_asr_get_properties(const char *name)
 {
   return (xbt_dict_t) xbt_lib_get_or_null(as_router_lib, name, ROUTING_PROP_ASR_LEVEL);
 }
+
+int SIMIX_is_maestro()
+{
+  return simix_global==NULL /*SimDag*/|| SIMIX_process_self() == simix_global->maestro_process;
+}