Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Modernize simcall_io_test().
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 7 Feb 2020 14:03:56 +0000 (15:03 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 7 Feb 2020 14:23:42 +0000 (15:23 +0100)
include/simgrid/simix.h
src/kernel/activity/IoImpl.cpp
src/s4u/s4u_Io.cpp
src/simix/libsmx.cpp
src/simix/popping_accessors.hpp
src/simix/popping_bodies.cpp
src/simix/popping_enum.h
src/simix/popping_generated.cpp
src/simix/simcalls.in

index 017f6be..a5914d5 100644 (file)
@@ -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   **********************************/
index 8125e0e..53029d1 100644 (file)
@@ -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 {
index a99680a..ddfaa61 100644 (file)
@@ -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;
index 3c1804b..4ea0501 100644 (file)
@@ -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<simgrid::kernel::activity::IoImpl*>(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<simgrid::kernel::activity::IoImpl*>(io));
+  return simgrid::kernel::actor::simcall([io] { return io->test(); });
 }
 
 void simcall_run_kernel(std::function<void()> const& code, simgrid::mc::SimcallInspector* t)
index 58ccce4..037525a 100644 (file)
@@ -933,31 +933,6 @@ static inline void simcall_io_wait__set__result(smx_simcall_t simcall, sg_size_t
   simgrid::simix::marshal<sg_size_t>(simcall->result_, result);
 }
 
-static inline simgrid::kernel::activity::IoImpl* simcall_io_test__get__io(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall->args_[0]);
-}
-static inline simgrid::kernel::activity::IoImpl* simcall_io_test__getraw__io(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<simgrid::kernel::activity::IoImpl*>(simcall->args_[0]);
-}
-static inline void simcall_io_test__set__io(smx_simcall_t simcall, simgrid::kernel::activity::IoImpl* arg)
-{
-  simgrid::simix::marshal<simgrid::kernel::activity::IoImpl*>(simcall->args_[0], arg);
-}
-static inline bool simcall_io_test__get__result(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal<bool>(simcall->result_);
-}
-static inline bool simcall_io_test__getraw__result(smx_simcall_t simcall)
-{
-  return simgrid::simix::unmarshal_raw<bool>(simcall->result_);
-}
-static inline void simcall_io_test__set__result(smx_simcall_t simcall, bool result)
-{
-  simgrid::simix::marshal<bool>(simcall->result_, result);
-}
-
 static inline int simcall_mc_random__get__min(smx_simcall_t simcall)
 {
   return simgrid::simix::unmarshal<int>(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);
index 1975723..a9fbc78 100644 (file)
@@ -165,13 +165,6 @@ inline static sg_size_t simcall_BODY_io_wait(simgrid::kernel::activity::IoImpl*
   return simcall<sg_size_t, simgrid::kernel::activity::IoImpl*, double>(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<bool, simgrid::kernel::activity::IoImpl*>(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 */
index c73e4ba..3df694b 100644 (file)
@@ -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,
index 9b73978..30a87b1 100644 (file)
@@ -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<simgrid::kernel::activity::IoImpl*>(simcall.args_[0]), simgrid::simix::unmarshal<double>(simcall.args_[1]));
       break;
 
-    case SIMCALL_IO_TEST:
-      simcall_HANDLER_io_test(&simcall, simgrid::simix::unmarshal<simgrid::kernel::activity::IoImpl*>(simcall.args_[0]));
-      break;
-
     case SIMCALL_MC_RANDOM:
       simgrid::simix::marshal<int>(simcall.result_, simcall_HANDLER_mc_random(&simcall, simgrid::simix::unmarshal<int>(simcall.args_[0]), simgrid::simix::unmarshal<int>(simcall.args_[1])));
       simcall_answer();
index 25687b1..de365aa 100644 (file)
@@ -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);