Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make sg_* functions callable from simdag
[simgrid.git] / src / simix / smx_global.cpp
index ea20087..ea12e3d 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"
@@ -55,6 +56,8 @@ typedef struct s_smx_timer {
   void* args;
 } s_smx_timer_t;
 
+void (*SMPI_switch_data_segment)(int) = NULL;
+
 static void* SIMIX_synchro_mallocator_new_f(void);
 static void SIMIX_synchro_mallocator_free_f(void* synchro);
 static void SIMIX_synchro_mallocator_reset_f(void* synchro);
@@ -460,15 +463,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());
         }
       }
     }
@@ -498,15 +501,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());
       }
     }
 
@@ -696,3 +699,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;
+}