Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / src / mc / checker / CommunicationDeterminismChecker.cpp
index d696b0e..5c2f3ae 100644 (file)
@@ -1,12 +1,10 @@
-/* Copyright (c) 2008-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2008-2021. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "src/mc/checker/CommunicationDeterminismChecker.hpp"
 #include "src/kernel/activity/MailboxImpl.hpp"
-#include "src/mc/Session.hpp"
-#include "src/mc/mc_api.hpp"
 #include "src/mc/mc_config.hpp"
 #include "src/mc/mc_exit.hpp"
 #include "src/mc/mc_private.hpp"
@@ -70,16 +68,16 @@ static void restore_communications_pattern(simgrid::mc::State* state)
     patterns_copy(incomplete_communications_pattern[i], state->incomplete_comm_pattern_[i]);
 }
 
-static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, int process,
+static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, aid_t process,
                                       const simgrid::mc::PatternCommunication* comm, unsigned int cursor)
 {
   char* type;
   char* res;
 
   if (comm->type == simgrid::mc::PatternCommunicationType::send)
-    type = bprintf("The send communications pattern of the process %d is different!", process - 1);
+    type = bprintf("The send communications pattern of the process %ld is different!", process - 1);
   else
-    type = bprintf("The recv communications pattern of the process %d is different!", process - 1);
+    type = bprintf("The recv communications pattern of the process %ld is different!", process - 1);
 
   using simgrid::mc::CommPatternDifference;
   switch (diff) {
@@ -122,20 +120,14 @@ static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern,
   comm_pattern->src_host = mcapi::get().get_actor_host_name(src_proc);
   comm_pattern->dst_host = mcapi::get().get_actor_host_name(dst_proc);
 
-  if (comm_pattern->data.empty()) {
-    auto pattern_data = mcapi::get().get_pattern_comm_data(comm_addr);
-    if (pattern_data.data() != nullptr) {
-      auto data_size = pattern_data.size();
-      comm_pattern->data.resize(data_size);
-      memcpy(comm_pattern->data.data(), pattern_data.data(), data_size);
-    }
-   }
+  if (comm_pattern->data.empty())
+    comm_pattern->data = mcapi::get().get_pattern_comm_data(comm_addr);
 }
 
 namespace simgrid {
 namespace mc {
 
-void CommunicationDeterminismChecker::deterministic_comm_pattern(int process, const PatternCommunication* comm,
+void CommunicationDeterminismChecker::deterministic_comm_pattern(aid_t process, const PatternCommunication* comm,
                                                                  int backtracking)
 {
   if (not backtracking) {
@@ -206,12 +198,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
 #if HAVE_SMPI
     pattern->tag = mcapi::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_ISEND);
 #endif
-    auto pattern_data = mcapi::get().get_pattern_comm_data(pattern->comm_addr);
-    if (pattern_data.data() != nullptr) {
-      auto data_size = pattern_data.size();
-      pattern->data.resize(data_size);
-      memcpy(pattern->data.data(), pattern_data.data(), data_size);
-    }
+    pattern->data = mcapi::get().get_pattern_comm_data(pattern->comm_addr);
 
 #if HAVE_SMPI
     auto send_detached = mcapi::get().check_send_request_detached(request);
@@ -245,8 +232,8 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
   incomplete_communications_pattern[issuer->get_pid()].push_back(pattern.release());
 }
 
-void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr,
-                                                            unsigned int issuer, int backtracking)
+void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr, aid_t issuer,
+                                                            int backtracking)
 {
   /* Complete comm pattern */
   std::vector<PatternCommunication*>& incomplete_pattern = incomplete_communications_pattern[issuer];
@@ -258,7 +245,7 @@ void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activi
 
   update_comm_pattern(*current_comm_pattern, comm_addr);
   std::unique_ptr<PatternCommunication> comm_pattern(*current_comm_pattern);
-  XBT_DEBUG("Remove incomplete comm pattern for process %u at cursor %zd", issuer,
+  XBT_DEBUG("Remove incomplete comm pattern for process %ld at cursor %zd", issuer,
             std::distance(begin(incomplete_pattern), current_comm_pattern));
   incomplete_pattern.erase(current_comm_pattern);
 
@@ -272,7 +259,7 @@ void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activi
   }
 }
 
-CommunicationDeterminismChecker::CommunicationDeterminismChecker(Session& s) : Checker(s) {}
+CommunicationDeterminismChecker::CommunicationDeterminismChecker() : Checker() {}
 
 CommunicationDeterminismChecker::~CommunicationDeterminismChecker() = default;
 
@@ -411,7 +398,7 @@ void CommunicationDeterminismChecker::handle_comm_pattern(simgrid::mc::CallType
       break;
     case CallType::WAIT:
     case CallType::WAITANY: {
-      simgrid::kernel::activity::CommImpl* comm_addr = nullptr;
+      const simgrid::kernel::activity::CommImpl* comm_addr = nullptr;
       if (call_type == CallType::WAIT)
         comm_addr = mcapi::get().get_comm_wait_raw_addr(req);
       else
@@ -548,15 +535,15 @@ void CommunicationDeterminismChecker::real_run()
 void CommunicationDeterminismChecker::run()
 {
   XBT_INFO("Check communication determinism");
-  mcapi::get().s_initialize();
+  mcapi::get().session_initialize();
 
   this->prepare();
   this->real_run();
 }
 
-Checker* createCommunicationDeterminismChecker(Session& s)
+Checker* createCommunicationDeterminismChecker()
 {
-  return new CommunicationDeterminismChecker(s);
+  return new CommunicationDeterminismChecker();
 }
 
 } // namespace mc