From: Arnaud Giersch Date: Tue, 19 Feb 2019 20:18:02 +0000 (+0100) Subject: Specialize parameter for simcall execution_wait. X-Git-Tag: v3_22~291 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/db98b9792e2e334d16905500c9464bb17c707396 Specialize parameter for simcall execution_wait. --- diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index f3eed0e4c5..1da9e46bea 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -176,9 +176,9 @@ XBT_ATTRIB_DEPRECATED_v325("Please use CommImpl::finish") XBT_PUBLIC void SIMIX_ XBT_PUBLIC smx_activity_t simcall_execution_parallel_start(const std::string& name, int host_nb, const sg_host_t* host_list, const double* flops_amount, const double* bytes_amount, double rate, double timeout); +XBT_PUBLIC e_smx_state_t simcall_execution_wait(const smx_activity_t& execution); XBT_PUBLIC e_smx_state_t simcall_execution_test(const smx_activity_t& execution); #endif -XBT_PUBLIC e_smx_state_t simcall_execution_wait(smx_activity_t execution); /**************************** Process simcalls ********************************/ SG_BEGIN_DECL() diff --git a/src/kernel/activity/ExecImpl.cpp b/src/kernel/activity/ExecImpl.cpp index beeed7efee..d6796c2be3 100644 --- a/src/kernel/activity/ExecImpl.cpp +++ b/src/kernel/activity/ExecImpl.cpp @@ -15,9 +15,9 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_process); -void simcall_HANDLER_execution_wait(smx_simcall_t simcall, smx_activity_t synchro) +void simcall_HANDLER_execution_wait(smx_simcall_t simcall, simgrid::kernel::activity::ExecImpl* 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); @@ -26,13 +26,13 @@ void simcall_HANDLER_execution_wait(smx_simcall_t simcall, smx_activity_t synchr /* 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(); } void simcall_HANDLER_execution_test(smx_simcall_t simcall, simgrid::kernel::activity::ExecImpl* synchro) diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 3137ed381a..aebacd11c9 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -71,9 +71,9 @@ smx_activity_t simcall_execution_parallel_start(const std::string& name, int hos * * @param execution The execution synchro */ -e_smx_state_t simcall_execution_wait(smx_activity_t execution) +e_smx_state_t simcall_execution_wait(const smx_activity_t& execution) { - return (e_smx_state_t) simcall_BODY_execution_wait(execution); + return (e_smx_state_t)simcall_BODY_execution_wait(static_cast(execution.get())); } e_smx_state_t simcall_execution_test(const smx_activity_t& execution) diff --git a/src/simix/popping_accessors.hpp b/src/simix/popping_accessors.hpp index fb1720e299..7e7d2e9a7e 100644 --- a/src/simix/popping_accessors.hpp +++ b/src/simix/popping_accessors.hpp @@ -90,17 +90,18 @@ static inline void simcall_process_sleep__set__result(smx_simcall_t simcall, int simgrid::simix::marshal(simcall->result, result); } -static inline boost::intrusive_ptr simcall_execution_wait__get__execution(smx_simcall_t simcall) +static inline simgrid::kernel::activity::ExecImpl* simcall_execution_wait__get__execution(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_execution_wait__getraw__execution(smx_simcall_t simcall) +static inline simgrid::kernel::activity::ExecImpl* simcall_execution_wait__getraw__execution(smx_simcall_t simcall) { - return simgrid::simix::unmarshal_raw(simcall->args[0]); + return simgrid::simix::unmarshal_raw(simcall->args[0]); } -static inline void simcall_execution_wait__set__execution(smx_simcall_t simcall, boost::intrusive_ptr arg) +static inline void simcall_execution_wait__set__execution(smx_simcall_t simcall, + simgrid::kernel::activity::ExecImpl* arg) { - simgrid::simix::marshal>(simcall->args[0], arg); + simgrid::simix::marshal(simcall->args[0], arg); } static inline int simcall_execution_wait__get__result(smx_simcall_t simcall) { @@ -1031,7 +1032,7 @@ static inline void simcall_run_blocking__set__code(smx_simcall_t simcall, std::f XBT_PRIVATE void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_actor_t process); XBT_PRIVATE void simcall_HANDLER_process_join(smx_simcall_t simcall, smx_actor_t process, double timeout); XBT_PRIVATE void simcall_HANDLER_process_sleep(smx_simcall_t simcall, double duration); -XBT_PRIVATE void simcall_HANDLER_execution_wait(smx_simcall_t simcall, boost::intrusive_ptr execution); +XBT_PRIVATE void simcall_HANDLER_execution_wait(smx_simcall_t simcall, simgrid::kernel::activity::ExecImpl* execution); XBT_PRIVATE void simcall_HANDLER_execution_test(smx_simcall_t simcall, simgrid::kernel::activity::ExecImpl* execution); XBT_PRIVATE void simcall_HANDLER_comm_send(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout); XBT_PRIVATE boost::intrusive_ptr simcall_HANDLER_comm_isend(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, int detached); diff --git a/src/simix/popping_bodies.cpp b/src/simix/popping_bodies.cpp index 05a9a5d466..7b18035e4d 100644 --- a/src/simix/popping_bodies.cpp +++ b/src/simix/popping_bodies.cpp @@ -57,11 +57,11 @@ inline static int simcall_BODY_process_sleep(double duration) return simcall(SIMCALL_PROCESS_SLEEP, duration); } -inline static int simcall_BODY_execution_wait(boost::intrusive_ptr execution) +inline static int simcall_BODY_execution_wait(simgrid::kernel::activity::ExecImpl* execution) { if (0) /* Go to that function to follow the code flow through the simcall barrier */ simcall_HANDLER_execution_wait(&SIMIX_process_self()->simcall, execution); - return simcall>(SIMCALL_EXECUTION_WAIT, execution); + return simcall(SIMCALL_EXECUTION_WAIT, execution); } inline static int simcall_BODY_execution_test(simgrid::kernel::activity::ExecImpl* execution) diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index 9a5ff7f0cf..f8318281c1 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -77,7 +77,8 @@ case SIMCALL_PROCESS_SLEEP: break; case SIMCALL_EXECUTION_WAIT: - simcall_HANDLER_execution_wait(simcall, simgrid::simix::unmarshal>(simcall->args[0])); + simcall_HANDLER_execution_wait(simcall, + simgrid::simix::unmarshal(simcall->args[0])); break; case SIMCALL_EXECUTION_TEST: diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in index 4b71e98a00..3235ddfc08 100644 --- a/src/simix/simcalls.in +++ b/src/simix/simcalls.in @@ -39,7 +39,7 @@ void process_suspend(smx_actor_t process) [[block]]; int process_join(smx_actor_t process, double timeout) [[block]]; int process_sleep(double duration) [[block]]; -int execution_wait(boost::intrusive_ptr execution) [[block]]; +int execution_wait(simgrid::kernel::activity::ExecImpl* execution) [[block]]; int execution_test(simgrid::kernel::activity::ExecImpl* execution) [[block]]; void comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout) [[block]];