Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
SIMIX_io_destroy is ~IoImpl
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 2 Aug 2018 19:33:21 +0000 (21:33 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 2 Aug 2018 22:00:13 +0000 (00:00 +0200)
throw the on_completion signal

src/kernel/activity/IoImpl.cpp
src/kernel/activity/IoImpl.hpp
src/simix/ActorImpl.cpp
src/simix/smx_io.cpp
src/simix/smx_io_private.hpp

index 7c17090..abcc7f8 100644 (file)
@@ -64,6 +64,8 @@ void simgrid::kernel::activity::IoImpl::post()
       THROW_IMPOSSIBLE;
       break;
   }
       THROW_IMPOSSIBLE;
       break;
   }
+  on_completion(this);
+
   SIMIX_io_finish(this);
 }
 /*************
   SIMIX_io_finish(this);
 }
 /*************
index 6b06b07..59ec127 100644 (file)
@@ -14,12 +14,10 @@ namespace kernel {
 namespace activity {
 
 class XBT_PUBLIC IoImpl : public ActivityImpl {
 namespace activity {
 
 class XBT_PUBLIC IoImpl : public ActivityImpl {
-  ~IoImpl() override;
-
 public:
 public:
+  ~IoImpl() override;
   explicit IoImpl(std::string name, resource::Action* surf_action, s4u::Storage* storage);
 
   explicit IoImpl(std::string name, resource::Action* surf_action, s4u::Storage* storage);
 
-public:
   void suspend() override;
   void resume() override;
   void post() override;
   void suspend() override;
   void resume() override;
   void post() override;
index 6aa8dfa..c27e6d0 100644 (file)
@@ -483,7 +483,7 @@ void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) {
       SIMIX_synchro_stop_waiting(process, &process->simcall);
 
     } else if (io != nullptr) {
       SIMIX_synchro_stop_waiting(process, &process->simcall);
 
     } else if (io != nullptr) {
-      SIMIX_io_destroy(process->waiting_synchro);
+      delete io.get();
     } else {
       xbt_die("Unknown type of activity");
     }
     } else {
       xbt_die("Unknown type of activity");
     }
@@ -547,7 +547,7 @@ void SIMIX_process_throw(smx_actor_t process, xbt_errcat_t cat, int value, const
     simgrid::kernel::activity::IoImplPtr io =
         boost::dynamic_pointer_cast<simgrid::kernel::activity::IoImpl>(process->waiting_synchro);
     if (io != nullptr) {
     simgrid::kernel::activity::IoImplPtr io =
         boost::dynamic_pointer_cast<simgrid::kernel::activity::IoImpl>(process->waiting_synchro);
     if (io != nullptr) {
-      SIMIX_io_destroy(process->waiting_synchro);
+      delete io.get();
     }
   }
   process->waiting_synchro = nullptr;
     }
   }
   process->waiting_synchro = nullptr;
index 5d9fef2..98d4b23 100644 (file)
@@ -51,14 +51,6 @@ void simcall_HANDLER_io_wait(smx_simcall_t simcall, smx_activity_t synchro)
     SIMIX_io_finish(synchro);
 }
 
     SIMIX_io_finish(synchro);
 }
 
-void SIMIX_io_destroy(smx_activity_t synchro)
-{
-  simgrid::kernel::activity::IoImplPtr io = boost::static_pointer_cast<simgrid::kernel::activity::IoImpl>(synchro);
-  XBT_DEBUG("Destroy synchro %p", synchro.get());
-  if (io->surf_action_)
-    io->surf_action_->unref();
-}
-
 void SIMIX_io_finish(smx_activity_t synchro)
 {
   for (smx_simcall_t const& simcall : synchro->simcalls_) {
 void SIMIX_io_finish(smx_activity_t synchro)
 {
   for (smx_simcall_t const& simcall : synchro->simcalls_) {
index 1cfa957..42a4aa8 100644 (file)
@@ -7,14 +7,11 @@
 #define SIMIX_IO_PRIVATE_HPP
 
 #include <xbt/base.h>
 #define SIMIX_IO_PRIVATE_HPP
 
 #include <xbt/base.h>
-
-#include "popping_private.hpp"
 #include "simgrid/s4u/Io.hpp"
 #include "simgrid/s4u/Io.hpp"
-#include "simgrid/simix.h"
+
 XBT_PRIVATE simgrid::kernel::activity::IoImplPtr SIMIX_io_start(std::string name, sg_size_t size, sg_storage_t storage,
                                                                 simgrid::s4u::Io::OpType type);
 
 XBT_PRIVATE simgrid::kernel::activity::IoImplPtr SIMIX_io_start(std::string name, sg_size_t size, sg_storage_t storage,
                                                                 simgrid::s4u::Io::OpType type);
 
-XBT_PRIVATE void SIMIX_io_destroy(smx_activity_t synchro);
 XBT_PRIVATE void SIMIX_io_finish(smx_activity_t synchro);
 
 #endif
 XBT_PRIVATE void SIMIX_io_finish(smx_activity_t synchro);
 
 #endif