Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[sonar] Const for local variables.
[simgrid.git] / src / mc / ModelChecker.cpp
index a715a41..884444c 100644 (file)
@@ -39,8 +39,23 @@ ModelChecker::ModelChecker(std::unique_ptr<RemoteSimulation> remote_simulation,
 
 void ModelChecker::start()
 {
-  checker_side_.start(
-      [](evutil_socket_t sig, short events, void* arg) { ((ModelChecker*)arg)->handle_events(sig, events); });
+  checker_side_.start([](evutil_socket_t sig, short events, void* arg) {
+    auto mc = static_cast<simgrid::mc::ModelChecker*>(arg);
+    if (events == EV_READ) {
+      char buffer[MC_MESSAGE_LENGTH];
+      ssize_t size = mc->checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
+      if (size == -1 && errno != EAGAIN)
+        throw simgrid::xbt::errno_error();
+
+      if (not mc->handle_message(buffer, size))
+        mc->checker_side_.break_loop();
+    } else if (events == EV_SIGNAL) {
+      if (sig == SIGCHLD)
+        mc->handle_waitpid();
+    } else {
+      xbt_die("Unexpected event");
+    }
+  });
 
   XBT_DEBUG("Waiting for the model-checked process");
   int status;
@@ -79,7 +94,7 @@ static const std::pair<const char*, const char*> ignored_local_variables[] = {
 
 void ModelChecker::setup_ignore()
 {
-  RemoteSimulation& process = this->get_remote_simulation();
+  const RemoteSimulation& process = this->get_remote_simulation();
   for (std::pair<const char*, const char*> const& var :
       ignored_local_variables)
     process.ignore_local_variable(var.first, var.second);
@@ -90,7 +105,7 @@ void ModelChecker::setup_ignore()
 
 void ModelChecker::shutdown()
 {
-  XBT_DEBUG("Shuting down model-checker");
+  XBT_DEBUG("Shutting down model-checker");
 
   RemoteSimulation* process = &this->get_remote_simulation();
   if (process->running()) {
@@ -154,7 +169,7 @@ bool ModelChecker::handle_message(const char* buffer, ssize_t size)
   case MC_MESSAGE_IGNORE_HEAP:
     {
     s_mc_message_ignore_heap_t message;
-    xbt_assert(size == sizeof(message), "Broken messsage");
+    xbt_assert(size == sizeof(message), "Broken message");
     memcpy(&message, buffer, sizeof(message));
 
     IgnoredHeapRegion region;
@@ -169,7 +184,7 @@ bool ModelChecker::handle_message(const char* buffer, ssize_t size)
   case MC_MESSAGE_UNIGNORE_HEAP:
     {
     s_mc_message_ignore_memory_t message;
-    xbt_assert(size == sizeof(message), "Broken messsage");
+    xbt_assert(size == sizeof(message), "Broken message");
     memcpy(&message, buffer, sizeof(message));
     get_remote_simulation().unignore_heap((void*)(std::uintptr_t)message.addr, message.size);
     break;
@@ -178,7 +193,7 @@ bool ModelChecker::handle_message(const char* buffer, ssize_t size)
   case MC_MESSAGE_IGNORE_MEMORY:
     {
     s_mc_message_ignore_memory_t message;
-    xbt_assert(size == sizeof(message), "Broken messsage");
+    xbt_assert(size == sizeof(message), "Broken message");
     memcpy(&message, buffer, sizeof(message));
     this->get_remote_simulation().ignore_region(message.addr, message.size);
     break;
@@ -187,7 +202,7 @@ bool ModelChecker::handle_message(const char* buffer, ssize_t size)
   case MC_MESSAGE_STACK_REGION:
     {
     s_mc_message_stack_region_t message;
-    xbt_assert(size == sizeof(message), "Broken messsage");
+    xbt_assert(size == sizeof(message), "Broken message");
     memcpy(&message, buffer, sizeof(message));
     this->get_remote_simulation().stack_areas().push_back(message.stack_region);
     }
@@ -233,26 +248,6 @@ void ModelChecker::exit(int status)
   ::exit(status);
 }
 
-void ModelChecker::handle_events(int sig, short events)
-{
-  if (events == EV_READ) {
-    char buffer[MC_MESSAGE_LENGTH];
-    ssize_t size = checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
-    if (size == -1 && errno != EAGAIN)
-      throw simgrid::xbt::errno_error();
-
-    if (not handle_message(buffer, size))
-      checker_side_.break_loop();
-  }
-  else if (events == EV_SIGNAL) {
-    if (sig == SIGCHLD)
-      this->handle_waitpid();
-  }
-  else {
-    xbt_die("Unexpected event");
-  }
-}
-
 void ModelChecker::handle_waitpid()
 {
   XBT_DEBUG("Check for wait event");
@@ -290,7 +285,7 @@ void ModelChecker::handle_waitpid()
 #ifdef __linux__
         ptrace(PTRACE_CONT, remote_simulation_->pid(), 0, WSTOPSIG(status));
 #elif defined BSD
-        ptrace(PT_CONTINUE, app_remote_mem_.pid(), (caddr_t)1, WSTOPSIG(status));
+        ptrace(PT_CONTINUE, remote_simulation_->pid(), (caddr_t)1, WSTOPSIG(status));
 #endif
         xbt_assert(errno == 0, "Could not PTRACE_CONT");
       }