Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mv ActorImpl where it belongs
[simgrid.git] / src / smpi / mpi / smpi_request.cpp
index 5dbc53b..8826c7c 100644 (file)
@@ -15,7 +15,6 @@
 #include "smpi_op.hpp"
 #include "src/kernel/activity/CommImpl.hpp"
 #include "src/mc/mc_replay.hpp"
-#include "src/simix/ActorImpl.hpp"
 #include "src/smpi/include/smpi_actor.hpp"
 #include "xbt/config.hpp"
 
@@ -375,9 +374,9 @@ void Request::start()
 
     int async_small_thresh = simgrid::config::get_value<int>("smpi/async-small-thresh");
 
-    xbt_mutex_t mut = process->mailboxes_mutex();
+    simgrid::s4u::MutexPtr mut = process->mailboxes_mutex();
     if (async_small_thresh != 0 || (flags_ & MPI_REQ_RMA) != 0)
-      xbt_mutex_acquire(mut);
+      mut->lock();
 
     if (async_small_thresh == 0 && (flags_ & MPI_REQ_RMA) == 0) {
       mailbox = process->mailbox();
@@ -421,7 +420,7 @@ void Request::start()
     XBT_DEBUG("recv simcall posted");
 
     if (async_small_thresh != 0 || (flags_ & MPI_REQ_RMA) != 0)
-      xbt_mutex_release(mut);
+      mut->unlock();
   } else { /* the RECV flag was not set, so this is a send */
     simgrid::smpi::ActorExt* process = smpi_process_remote(simgrid::s4u::Actor::by_pid(dst_));
     int rank = src_;
@@ -470,10 +469,10 @@ void Request::start()
 
     int async_small_thresh = simgrid::config::get_value<int>("smpi/async-small-thresh");
 
-    xbt_mutex_t mut=process->mailboxes_mutex();
+    simgrid::s4u::MutexPtr mut = process->mailboxes_mutex();
 
     if (async_small_thresh != 0 || (flags_ & MPI_REQ_RMA) != 0)
-      xbt_mutex_acquire(mut);
+      mut->lock();
 
     if (not(async_small_thresh != 0 || (flags_ & MPI_REQ_RMA) != 0)) {
       mailbox = process->mailbox();
@@ -516,12 +515,12 @@ void Request::start()
 
     /* FIXME: detached sends are not traceable (action_ == nullptr) */
     if (action_ != nullptr) {
-      std::string category = TRACE_internal_smpi_get_category();
+      std::string category = smpi_process()->get_tracing_category();
       simgrid::simix::simcall([this, category] { this->action_->set_category(category); });
     }
 
     if (async_small_thresh != 0 || ((flags_ & MPI_REQ_RMA) != 0))
-      xbt_mutex_release(mut);
+      mut->unlock();
   }
 }
 
@@ -603,7 +602,7 @@ int Request::testsome(int incount, MPI_Request requests[], int *indices, MPI_Sta
 
 int Request::testany(int count, MPI_Request requests[], int *index, MPI_Status * status)
 {
-  std::vector<simgrid::kernel::activity::ActivityImplPtr> comms;
+  std::vector<simgrid::kernel::activity::CommImpl*> comms;
   comms.reserve(count);
 
   int i;
@@ -614,7 +613,7 @@ int Request::testany(int count, MPI_Request requests[], int *index, MPI_Status *
   std::vector<int> map; /** Maps all matching comms back to their location in requests **/
   for(i = 0; i < count; i++) {
     if ((requests[i] != MPI_REQUEST_NULL) && requests[i]->action_ && not(requests[i]->flags_ & MPI_REQ_PREPARED)) {
-      comms.push_back(requests[i]->action_);
+      comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(requests[i]->action_.get()));
       map.push_back(i);
     }
   }
@@ -842,7 +841,7 @@ void Request::wait(MPI_Request * request, MPI_Status * status)
 
 int Request::waitany(int count, MPI_Request requests[], MPI_Status * status)
 {
-  std::vector<simgrid::kernel::activity::ActivityImplPtr> comms;
+  std::vector<simgrid::kernel::activity::CommImpl*> comms;
   comms.reserve(count);
   int index = MPI_UNDEFINED;
 
@@ -855,7 +854,7 @@ int Request::waitany(int count, MPI_Request requests[], MPI_Status * status)
           not(requests[i]->flags_ & MPI_REQ_FINISHED)) {
         if (requests[i]->action_ != nullptr) {
           XBT_DEBUG("Waiting any %p ", requests[i]);
-          comms.push_back(requests[i]->action_);
+          comms.push_back(static_cast<simgrid::kernel::activity::CommImpl*>(requests[i]->action_.get()));
           map.push_back(i);
         } else {
           // This is a finished detached request, let's return this one