From: Arnaud Giersch Date: Tue, 19 Feb 2019 17:16:12 +0000 (+0100) Subject: Specialize parameter for simcall io_wait. X-Git-Tag: v3_22~293 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/706a0c36671aa5ab7afe12afe987cc1c72f049ac Specialize parameter for simcall io_wait. --- diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 177ecd5cb7..7fcf1301c5 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -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); diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index 7597010364..f8fd4c99e6 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -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(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(synchro)->finish(); + synchro->finish(); } namespace simgrid { diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index f330d394b2..8a71f117c5 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -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(io.get())); } void simcall_run_kernel(std::function const& code) diff --git a/src/simix/popping_accessors.hpp b/src/simix/popping_accessors.hpp index ae1e26a89f..59f4308e74 100644 --- a/src/simix/popping_accessors.hpp +++ b/src/simix/popping_accessors.hpp @@ -940,19 +940,17 @@ static inline void simcall_sem_acquire_timeout__set__result(smx_simcall_t simcal simgrid::simix::marshal(simcall->result, result); } -static inline boost::intrusive_ptr -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>(simcall->args[0]); + return simgrid::simix::unmarshal(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(simcall->args[0]); + return simgrid::simix::unmarshal_raw(simcall->args[0]); } -static inline void simcall_io_wait__set__io(smx_simcall_t simcall, - boost::intrusive_ptr arg) +static inline void simcall_io_wait__set__io(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* arg) { - simgrid::simix::marshal>(simcall->args[0], arg); + simgrid::simix::marshal(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 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 diff --git a/src/simix/popping_bodies.cpp b/src/simix/popping_bodies.cpp index 1fa0a3fa6c..aab2039ef9 100644 --- a/src/simix/popping_bodies.cpp +++ b/src/simix/popping_bodies.cpp @@ -178,11 +178,11 @@ inline static int simcall_BODY_sem_acquire_timeout(smx_sem_t sem, double timeout return simcall(SIMCALL_SEM_ACQUIRE_TIMEOUT, sem, timeout); } -inline static sg_size_t simcall_BODY_io_wait(boost::intrusive_ptr 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>(SIMCALL_IO_WAIT, io); + return simcall(SIMCALL_IO_WAIT, io); } inline static int simcall_BODY_mc_random(int min, int max) diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index fbaa9b5a36..490d122822 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -154,9 +154,7 @@ case SIMCALL_SEM_ACQUIRE_TIMEOUT: break; case SIMCALL_IO_WAIT: - simcall_HANDLER_io_wait( - simcall, - simgrid::simix::unmarshal>(simcall->args[0])); + simcall_HANDLER_io_wait(simcall, simgrid::simix::unmarshal(simcall->args[0])); break; case SIMCALL_MC_RANDOM: diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in index e9a70d5e6b..c9ea0e0dfe 100644 --- a/src/simix/simcalls.in +++ b/src/simix/simcalls.in @@ -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 io) [[block]]; +sg_size_t io_wait(simgrid::kernel::activity::IoImpl* io) [[block]]; int mc_random(int min, int max);