X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4a4d0d50d8a6fbd0b50172905f7ad5cf5ed0f9a0..3a1ea70a418f393ca1677074e928c664022295bd:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 3c1804b35c..12b03ffc2e 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -29,10 +29,22 @@ * * @param execution The execution synchro */ -e_smx_state_t simcall_execution_wait(simgrid::kernel::activity::ActivityImpl* execution, double timeout) +simgrid::kernel::activity::State simcall_execution_wait(simgrid::kernel::activity::ActivityImpl* execution, + double timeout) // XBT_ATTRIB_DEPRECATED_v330 { - return (e_smx_state_t)simcall_BODY_execution_wait(static_cast(execution), - timeout); + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::simcall_blocking( + [execution, issuer, timeout] { execution->wait_for(issuer, timeout); }); + return simgrid::kernel::activity::State::DONE; +} + +simgrid::kernel::activity::State simcall_execution_wait(const simgrid::kernel::activity::ActivityImplPtr& execution, + double timeout) // XBT_ATTRIB_DEPRECATED_v330 +{ + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::simcall_blocking( + [execution, issuer, timeout] { execution->wait_for(issuer, timeout); }); + return simgrid::kernel::activity::State::DONE; } bool simcall_execution_test(simgrid::kernel::activity::ActivityImpl* execution) // XBT_ATTRIB_DEPRECATED_v330 @@ -40,6 +52,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); @@ -55,7 +72,7 @@ void simcall_process_suspend(smx_actor_t process) // XBT_DEPRECATED_v328 process->iface()->suspend(); } -e_smx_state_t simcall_process_sleep(double duration) // XBT_DEPRECATED_v329 +simgrid::kernel::activity::State simcall_process_sleep(double duration) // XBT_ATTRIB_DEPRECATED_v329 { simgrid::kernel::actor::ActorImpl::self()->sleep(duration); return simgrid::kernel::activity::State::DONE; @@ -80,8 +97,8 @@ void simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, /* the model-checker wants two separate simcalls */ simgrid::kernel::activity::ActivityImplPtr comm = nullptr; /* MC needs the comm to be set to nullptr during the simcall */ - comm = simcall_comm_isend(sender, mbox, task_size, rate, - src_buff, src_buff_size, match_fun, nullptr, copy_data_fun, data, 0); + comm = simcall_comm_isend(sender, mbox, task_size, rate, src_buff, src_buff_size, match_fun, nullptr, copy_data_fun, + data, false); simcall_comm_wait(comm.get(), timeout); comm = nullptr; } @@ -167,7 +184,7 @@ simcall_comm_iprobe(smx_mailbox_t mbox, int type, bool (*match_fun)(void*, void* unsigned int simcall_comm_waitany(simgrid::kernel::activity::ActivityImplPtr comms[], size_t count, double timeout) // XBT_ATTRIB_DEPRECATED_v330 { - std::unique_ptr rcomms(new simgrid::kernel::activity::CommImpl*[count]); + auto rcomms = std::make_unique(count); std::transform(comms, comms + count, rcomms.get(), [](const simgrid::kernel::activity::ActivityImplPtr& comm) { return static_cast(comm.get()); }); @@ -186,7 +203,7 @@ int simcall_comm_testany(simgrid::kernel::activity::ActivityImplPtr comms[], siz { if (count == 0) return -1; - std::unique_ptr rcomms(new simgrid::kernel::activity::CommImpl*[count]); + auto rcomms = std::make_unique(count); std::transform(comms, comms + count, rcomms.get(), [](const simgrid::kernel::activity::ActivityImplPtr& comm) { return static_cast(comm.get()); }); @@ -306,25 +323,41 @@ 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(simgrid::kernel::activity::ActivityImpl* io, double timeout) +simgrid::kernel::activity::State simcall_io_wait(simgrid::kernel::activity::ActivityImpl* io, + double timeout) // XBT_ATTRIB_DEPRECATED_v330 +{ + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::simcall_blocking([io, issuer, timeout] { io->wait_for(issuer, timeout); }); + return simgrid::kernel::activity::State::DONE; +} + +simgrid::kernel::activity::State simcall_io_wait(const simgrid::kernel::activity::ActivityImplPtr& io, + double timeout) // XBT_ATTRIB_DEPRECATED_v330 +{ + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::simcall_blocking([io, issuer, timeout] { io->wait_for(issuer, timeout); }); + return simgrid::kernel::activity::State::DONE; +} + +bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io) // XBT_ATTRIB_DEPRECATED_v330 { - return (e_smx_state_t)simcall_BODY_io_wait(static_cast(io), timeout); + return simgrid::kernel::actor::simcall([io] { return io->test(); }); } -bool simcall_io_test(simgrid::kernel::activity::ActivityImpl* io) +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) { - simgrid::kernel::actor::ActorImpl::self()->simcall.inspector_ = t; + simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = t; simcall_BODY_run_kernel(&code); } void simcall_run_blocking(std::function const& code, simgrid::mc::SimcallInspector* t = nullptr) { - simgrid::kernel::actor::ActorImpl::self()->simcall.inspector_ = t; + simgrid::kernel::actor::ActorImpl::self()->simcall_.inspector_ = t; simcall_BODY_run_blocking(&code); }