Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Move MC-related out of simix and into mc where it belongs
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 17 Nov 2015 10:02:31 +0000 (11:02 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 17 Nov 2015 10:18:41 +0000 (11:18 +0100)
src/mc/mc_client.cpp
src/simix/smx_global.c

index 9caade7..12edc6b 100644 (file)
@@ -8,6 +8,7 @@
 #include <cerrno>
 
 #include <sys/types.h>
+#include <sys/ptrace.h>
 #include <sys/socket.h>
 
 #include <xbt/log.h>
@@ -31,6 +32,12 @@ mc_client_t mc_client;
 
 void MC_client_init(void)
 {
+  if (mc_mode != MC_MODE_NONE)
+    return;
+  if (!getenv(MC_ENV_SOCKET_FD))
+    return;
+  mc_mode = MC_MODE_CLIENT;
+
   if (mc_client) {
     XBT_WARN("MC_client_init called more than once.");
     return;
@@ -54,6 +61,11 @@ void MC_client_init(void)
   mc_client = xbt_new0(s_mc_client_t, 1);
   mc_client->fd = fd;
   mc_client->active = 1;
+
+  // Waiting for the model-checker:
+  if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) == -1 || raise(SIGSTOP) != 0)
+    xbt_die("Could not wait for the model-checker");
+  MC_client_handle_messages();
 }
 
 void MC_client_send_message(void* message, size_t size)
index e1bf5ae..0404d17 100644 (file)
@@ -221,19 +221,7 @@ void SIMIX_global_init(int *argc, char **argv)
 #ifdef HAVE_MC
   // The communication initialization is done ASAP.
   // We need to communicate  initialization of the different layers to the model-checker.
-  if (mc_mode == MC_MODE_NONE) {
-    if (getenv(MC_ENV_SOCKET_FD)) {
-
-      mc_mode = MC_MODE_CLIENT;
-      MC_client_init();
-
-      // Waiting for the model-checker:
-      if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) == -1 || raise(SIGSTOP) != 0)
-        xbt_die("Could not wait for the model-checker");
-
-      MC_client_handle_messages();
-    }
-  }
+  MC_client_init();
 #endif
 
   if (_sg_cfg_exit_asap)