From 085f3f5d8c17c1d3e0d069e64ee7c0de00ccf7e6 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Fri, 7 Feb 2020 15:03:56 +0100 Subject: [PATCH] Modernize simcall_io_test(). --- include/simgrid/simix.h | 10 ++++------ src/kernel/activity/IoImpl.cpp | 13 ------------- src/s4u/s4u_Io.cpp | 2 +- src/simix/libsmx.cpp | 14 ++++++++++++-- src/simix/popping_accessors.hpp | 26 -------------------------- src/simix/popping_bodies.cpp | 7 ------- src/simix/popping_enum.h | 1 - src/simix/popping_generated.cpp | 5 ----- src/simix/simcalls.in | 1 - 9 files changed, 17 insertions(+), 62 deletions(-) diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 017f6be6c7..a5914d568d 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -212,18 +212,16 @@ SG_END_DECL /***************************** Io **************************************/ #ifdef __cplusplus XBT_PUBLIC e_smx_state_t simcall_io_wait(simgrid::kernel::activity::ActivityImpl* io, double timeout); -XBT_PUBLIC bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io); +XBT_ATTRIB_DEPRECATED_v330("Please use s4u::Io::test()") XBT_PUBLIC + bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io); +XBT_ATTRIB_DEPRECATED_v330("Please use s4u::Io::test()") XBT_PUBLIC + bool simcall_io_test(const simgrid::kernel::activity::ActivityImplPtr& io); XBT_ATTRIB_DEPRECATED_v330("Please use an ActivityImpl* for first parameter") inline e_smx_state_t simcall_io_wait(const simgrid::kernel::activity::ActivityImplPtr& io, double timeout) { return simcall_io_wait(io.get(), timeout); } -XBT_ATTRIB_DEPRECATED_v330("Please use an ActivityImpl* for first parameter") inline bool simcall_io_test( - const simgrid::kernel::activity::ActivityImplPtr& io) -{ - return simcall_io_test(io.get()); -} #endif /************************** MC simcalls **********************************/ diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index 8125e0e595..53029d1930 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -50,19 +50,6 @@ void simcall_HANDLER_io_wait(smx_simcall_t simcall, simgrid::kernel::activity::I } } -void simcall_HANDLER_io_test(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* synchro) -{ - bool res = (synchro->state_ != simgrid::kernel::activity::State::WAITING && - synchro->state_ != simgrid::kernel::activity::State::RUNNING); - if (res) { - synchro->simcalls_.push_back(simcall); - synchro->finish(); - } else { - simcall->issuer_->simcall_answer(); - } - simcall_io_test__set__result(simcall, res); -} - namespace simgrid { namespace kernel { namespace activity { diff --git a/src/s4u/s4u_Io.cpp b/src/s4u/s4u_Io.cpp index a99680ae49..ddfaa6127b 100644 --- a/src/s4u/s4u_Io.cpp +++ b/src/s4u/s4u_Io.cpp @@ -80,7 +80,7 @@ bool Io::test() if (state_ == State::INITED || state_ == State::STARTING) this->vetoable_start(); - if (simcall_io_test(get_impl())) { + if (kernel::actor::simcall([this] { return this->get_impl()->test(); })) { state_ = State::FINISHED; this->release_dependencies(); return true; diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 3c1804b35c..4ea0501fb8 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -40,6 +40,11 @@ bool simcall_execution_test(simgrid::kernel::activity::ActivityImpl* execution) return simgrid::kernel::actor::simcall([execution] { return execution->test(); }); } +bool simcall_execution_test(const simgrid::kernel::activity::ActivityImplPtr& execution) // XBT_ATTRIB_DEPRECATED_v330 +{ + return simgrid::kernel::actor::simcall([execution] { return execution->test(); }); +} + unsigned int simcall_execution_waitany_for(simgrid::kernel::activity::ExecImpl* execs[], size_t count, double timeout) { return simcall_BODY_execution_waitany_for(execs, count, timeout); @@ -311,9 +316,14 @@ e_smx_state_t simcall_io_wait(simgrid::kernel::activity::ActivityImpl* io, doubl return (e_smx_state_t)simcall_BODY_io_wait(static_cast(io), timeout); } -bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io) +bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io) // XBT_ATTRIB_DEPRECATED_v330 +{ + return simgrid::kernel::actor::simcall([io] { return io->test(); }); +} + +bool simcall_io_test(const simgrid::kernel::activity::ActivityImplPtr& io) // XBT_ATTRIB_DEPRECATD_v330 { - return simcall_BODY_io_test(static_cast(io)); + return simgrid::kernel::actor::simcall([io] { return io->test(); }); } void simcall_run_kernel(std::function const& code, simgrid::mc::SimcallInspector* t) diff --git a/src/simix/popping_accessors.hpp b/src/simix/popping_accessors.hpp index 58ccce4b63..037525a638 100644 --- a/src/simix/popping_accessors.hpp +++ b/src/simix/popping_accessors.hpp @@ -933,31 +933,6 @@ static inline void simcall_io_wait__set__result(smx_simcall_t simcall, sg_size_t simgrid::simix::marshal(simcall->result_, result); } -static inline simgrid::kernel::activity::IoImpl* simcall_io_test__get__io(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->args_[0]); -} -static inline simgrid::kernel::activity::IoImpl* simcall_io_test__getraw__io(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->args_[0]); -} -static inline void simcall_io_test__set__io(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* arg) -{ - simgrid::simix::marshal(simcall->args_[0], arg); -} -static inline bool simcall_io_test__get__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->result_); -} -static inline bool simcall_io_test__getraw__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->result_); -} -static inline void simcall_io_test__set__result(smx_simcall_t simcall, bool result) -{ - simgrid::simix::marshal(simcall->result_, result); -} - static inline int simcall_mc_random__get__min(smx_simcall_t simcall) { return simgrid::simix::unmarshal(simcall->args_[0]); @@ -1041,5 +1016,4 @@ XBT_PRIVATE void simcall_HANDLER_cond_wait_timeout(smx_simcall_t simcall, smx_co 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, simgrid::kernel::activity::IoImpl* io, double timeout); -XBT_PRIVATE void simcall_HANDLER_io_test(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* io); XBT_PRIVATE int simcall_HANDLER_mc_random(smx_simcall_t simcall, int min, int max); diff --git a/src/simix/popping_bodies.cpp b/src/simix/popping_bodies.cpp index 1975723b5a..a9fbc7871e 100644 --- a/src/simix/popping_bodies.cpp +++ b/src/simix/popping_bodies.cpp @@ -165,13 +165,6 @@ inline static sg_size_t simcall_BODY_io_wait(simgrid::kernel::activity::IoImpl* return simcall(SIMCALL_IO_WAIT, io, timeout); } -inline static bool simcall_BODY_io_test(simgrid::kernel::activity::IoImpl* io) -{ - if (0) /* Go to that function to follow the code flow through the simcall barrier */ - simcall_HANDLER_io_test(&SIMIX_process_self()->simcall, io); - return simcall(SIMCALL_IO_TEST, io); -} - inline static int simcall_BODY_mc_random(int min, int max) { if (0) /* Go to that function to follow the code flow through the simcall barrier */ diff --git a/src/simix/popping_enum.h b/src/simix/popping_enum.h index c73e4ba6cd..3df694bacd 100644 --- a/src/simix/popping_enum.h +++ b/src/simix/popping_enum.h @@ -37,7 +37,6 @@ typedef enum { SIMCALL_SEM_ACQUIRE, SIMCALL_SEM_ACQUIRE_TIMEOUT, SIMCALL_IO_WAIT, - SIMCALL_IO_TEST, SIMCALL_MC_RANDOM, SIMCALL_RUN_KERNEL, SIMCALL_RUN_BLOCKING, diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index 9b73978fbd..30a87b193b 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -44,7 +44,6 @@ const char* simcall_names[] = { "SIMCALL_SEM_ACQUIRE", "SIMCALL_SEM_ACQUIRE_TIMEOUT", "SIMCALL_IO_WAIT", - "SIMCALL_IO_TEST", "SIMCALL_MC_RANDOM", "SIMCALL_RUN_KERNEL", "SIMCALL_RUN_BLOCKING", @@ -137,10 +136,6 @@ void simgrid::kernel::actor::ActorImpl::simcall_handle(int value) { simcall_HANDLER_io_wait(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); break; - case SIMCALL_IO_TEST: - simcall_HANDLER_io_test(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); - break; - case SIMCALL_MC_RANDOM: simgrid::simix::marshal(simcall.result_, simcall_HANDLER_mc_random(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]))); simcall_answer(); diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in index 25687b1496..de365aaf05 100644 --- a/src/simix/simcalls.in +++ b/src/simix/simcalls.in @@ -58,7 +58,6 @@ void sem_acquire(smx_sem_t sem) [[block]]; int sem_acquire_timeout(smx_sem_t sem, double timeout) [[block]]; sg_size_t io_wait(simgrid::kernel::activity::IoImpl* io, double timeout) [[block]]; -bool io_test(simgrid::kernel::activity::IoImpl* io) [[block]]; int mc_random(int min, int max); -- 2.20.1