Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Specialize parameter for simcall io_wait.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 19 Feb 2019 17:16:12 +0000 (18:16 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 20 Feb 2019 08:42:04 +0000 (09:42 +0100)
include/simgrid/simix.h
src/kernel/activity/IoImpl.cpp
src/simix/libsmx.cpp
src/simix/popping_accessors.hpp
src/simix/popping_bodies.cpp
src/simix/popping_generated.cpp
src/simix/simcalls.in

index 177ecd5..7fcf130 100644 (file)
@@ -247,13 +247,19 @@ XBT_PUBLIC int simcall_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, dou
 
 XBT_PUBLIC void simcall_sem_acquire(smx_sem_t sem);
 XBT_PUBLIC int simcall_sem_acquire_timeout(smx_sem_t sem, double max_duration);
+SG_END_DECL()
 
 /*****************************   Io   **************************************/
-XBT_PUBLIC e_smx_state_t simcall_io_wait(smx_activity_t io);
+#ifdef __cplusplus
+XBT_PUBLIC e_smx_state_t simcall_io_wait(const smx_activity_t& io);
+#endif
 /************************** MC simcalls   **********************************/
+SG_BEGIN_DECL()
 XBT_PUBLIC int simcall_mc_random(int min, int max);
+SG_END_DECL()
 
 /***************************** DEPRECATED CALLS ****************************/
+SG_BEGIN_DECL()
 XBT_ATTRIB_DEPRECATED_v325("Please use sg_actor_set_kill_time()") XBT_PUBLIC
     void simcall_process_set_kill_time(smx_actor_t process, double kill_time);
 
index 7597010..f8fd4c9 100644 (file)
@@ -13,9 +13,9 @@
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_io, simix, "Logging specific to SIMIX (io)");
 
-void simcall_HANDLER_io_wait(smx_simcall_t simcall, smx_activity_t synchro)
+void simcall_HANDLER_io_wait(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* synchro)
 {
-  XBT_DEBUG("Wait for execution of synchro %p, state %d", synchro.get(), (int)synchro->state_);
+  XBT_DEBUG("Wait for execution of synchro %p, state %d", synchro, (int)synchro->state_);
 
   /* Associate this simcall to the synchro */
   synchro->simcalls_.push_back(simcall);
@@ -24,13 +24,13 @@ void simcall_HANDLER_io_wait(smx_simcall_t simcall, smx_activity_t synchro)
   /* set surf's synchro */
   if (MC_is_active() || MC_record_replay_is_active()) {
     synchro->state_ = SIMIX_DONE;
-    boost::static_pointer_cast<simgrid::kernel::activity::IoImpl>(synchro)->finish();
+    synchro->finish();
     return;
   }
 
   /* If the synchro is already finished then perform the error handling */
   if (synchro->state_ != SIMIX_RUNNING)
-    boost::static_pointer_cast<simgrid::kernel::activity::IoImpl>(synchro)->finish();
+    synchro->finish();
 }
 
 namespace simgrid {
index f330d39..8a71f11 100644 (file)
@@ -336,9 +336,9 @@ int simcall_sem_acquire_timeout(smx_sem_t sem, double timeout)
   return simcall_BODY_sem_acquire_timeout(sem, timeout);
 }
 
-e_smx_state_t simcall_io_wait(smx_activity_t io)
+e_smx_state_t simcall_io_wait(const smx_activity_t& io)
 {
-  return (e_smx_state_t)simcall_BODY_io_wait(io);
+  return (e_smx_state_t)simcall_BODY_io_wait(static_cast<simgrid::kernel::activity::IoImpl*>(io.get()));
 }
 
 void simcall_run_kernel(std::function<void()> const& code)
index ae1e26a..59f4308 100644 (file)
@@ -940,19 +940,17 @@ static inline void simcall_sem_acquire_timeout__set__result(smx_simcall_t simcal
   simgrid::simix::marshal<int>(simcall->result, result);
 }
 
-static inline boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>
-simcall_io_wait__get__io(smx_simcall_t simcall)
+static inline simgrid::kernel::activity::IoImpl* simcall_io_wait__get__io(smx_simcall_t simcall)
 {
-  return simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]);
+  return simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0]);
 }
-static inline simgrid::kernel::activity::ActivityImpl* simcall_io_wait__getraw__io(smx_simcall_t simcall)
+static inline simgrid::kernel::activity::IoImpl* simcall_io_wait__getraw__io(smx_simcall_t simcall)
 {
-  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::ActivityImpl*>(simcall->args[0]);
+  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::IoImpl*>(simcall->args[0]);
 }
-static inline void simcall_io_wait__set__io(smx_simcall_t simcall,
-                                            boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> arg)
+static inline void simcall_io_wait__set__io(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* arg)
 {
-  simgrid::simix::marshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0], arg);
+  simgrid::simix::marshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0], arg);
 }
 static inline sg_size_t simcall_io_wait__get__result(smx_simcall_t simcall)
 {
@@ -1056,6 +1054,5 @@ XBT_PRIVATE void simcall_HANDLER_cond_wait(smx_simcall_t simcall, smx_cond_t con
 XBT_PRIVATE void simcall_HANDLER_cond_wait_timeout(smx_simcall_t simcall, smx_cond_t cond, smx_mutex_t mutex, double timeout);
 XBT_PRIVATE void simcall_HANDLER_sem_acquire(smx_simcall_t simcall, smx_sem_t sem);
 XBT_PRIVATE void simcall_HANDLER_sem_acquire_timeout(smx_simcall_t simcall, smx_sem_t sem, double timeout);
-XBT_PRIVATE void simcall_HANDLER_io_wait(smx_simcall_t simcall,
-                                         boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io);
+XBT_PRIVATE void simcall_HANDLER_io_wait(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* io);
 XBT_PRIVATE int simcall_HANDLER_mc_random(smx_simcall_t simcall, int min, int max);
\ No newline at end of file
index 1fa0a3f..aab2039 100644 (file)
@@ -178,11 +178,11 @@ inline static int simcall_BODY_sem_acquire_timeout(smx_sem_t sem, double timeout
   return simcall<int, smx_sem_t, double>(SIMCALL_SEM_ACQUIRE_TIMEOUT, sem, timeout);
 }
 
-inline static sg_size_t simcall_BODY_io_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io)
+inline static sg_size_t simcall_BODY_io_wait(simgrid::kernel::activity::IoImpl* io)
 {
   if (0) /* Go to that function to follow the code flow through the simcall barrier */
     simcall_HANDLER_io_wait(&SIMIX_process_self()->simcall, io);
-  return simcall<sg_size_t, boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(SIMCALL_IO_WAIT, io);
+  return simcall<sg_size_t, simgrid::kernel::activity::IoImpl*>(SIMCALL_IO_WAIT, io);
 }
 
 inline static int simcall_BODY_mc_random(int min, int max)
index fbaa9b5..490d122 100644 (file)
@@ -154,9 +154,7 @@ case SIMCALL_SEM_ACQUIRE_TIMEOUT:
   break;
 
 case SIMCALL_IO_WAIT:
-  simcall_HANDLER_io_wait(
-      simcall,
-      simgrid::simix::unmarshal<boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl>>(simcall->args[0]));
+  simcall_HANDLER_io_wait(simcall, simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall->args[0]));
   break;
 
 case SIMCALL_MC_RANDOM:
index e9a70d5..c9ea0e0 100644 (file)
@@ -61,7 +61,7 @@ int        cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout)
 void      sem_acquire(smx_sem_t sem) [[block]];
 int       sem_acquire_timeout(smx_sem_t sem, double timeout) [[block]];
 
-sg_size_t io_wait(boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> io) [[block]];
+sg_size_t io_wait(simgrid::kernel::activity::IoImpl* io) [[block]];
 
 int        mc_random(int min, int max);