X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f8c51e91f402a7b7bbe72fb61af59ddaad7d5cf8..239a6c2b5cf6df25b93d95b5df30fb5fbacbfbcd:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 8bcf6626db..247dd903c5 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -16,11 +16,11 @@ #include "src/kernel/activity/ConditionVariableImpl.hpp" #include "src/kernel/activity/ExecImpl.hpp" #include "src/kernel/activity/IoImpl.hpp" +#include "src/kernel/activity/MailboxImpl.hpp" #include "src/kernel/activity/MutexImpl.hpp" #include "src/mc/mc_replay.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" #include "src/simix/smx_host_private.hpp" -#include "src/simix/smx_io_private.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); @@ -41,8 +41,9 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); * @param timeout timeout * @return A new SIMIX execution synchronization */ -smx_activity_t simcall_execution_parallel_start(std::string name, int host_nb, sg_host_t* host_list, - double* flops_amount, double* bytes_amount, double rate, double timeout) +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) { /* checking for infinite values */ for (int i = 0 ; i < host_nb ; ++i) { @@ -59,7 +60,8 @@ smx_activity_t simcall_execution_parallel_start(std::string name, int host_nb, s xbt_assert(std::isfinite(rate), "rate is not finite!"); return simgrid::simix::simcall([name, host_nb, host_list, flops_amount, bytes_amount, rate, timeout] { - return SIMIX_execution_parallel_start(name, host_nb, host_list, flops_amount, bytes_amount, rate, timeout); + return SIMIX_execution_parallel_start(std::move(name), host_nb, host_list, flops_amount, bytes_amount, rate, + timeout); }); } @@ -93,35 +95,6 @@ void simcall_process_suspend(smx_actor_t process) simcall_BODY_process_suspend(process); } -/** - * @ingroup simix_process_management - * @brief Set the user data of a #smx_actor_t. - * - * This functions sets the user data associated to @a process. - * @param process SIMIX process - * @param data User data - */ -void simcall_process_set_data(smx_actor_t process, void *data) -{ - simgrid::simix::simcall([process, data] { process->set_user_data(data); }); -} - -/** - * @ingroup simix_process_management - * @brief Set the kill time of a process. - */ -void simcall_process_set_kill_time(smx_actor_t process, double kill_time) -{ - - if (kill_time <= SIMIX_get_clock()) - return; - XBT_DEBUG("Set kill time %f for process %s@%s", kill_time, process->get_cname(), process->host_->get_cname()); - process->kill_timer = SIMIX_timer_set(kill_time, [process] { - SIMIX_process_kill(process, nullptr); - process->kill_timer=nullptr; - }); -} - /** * @ingroup simix_process_management * @brief Creates a new sleep SIMIX synchro. @@ -232,19 +205,7 @@ smx_activity_t simcall_comm_iprobe(smx_mailbox_t mbox, int type, { xbt_assert(mbox, "No rendez-vous point defined for iprobe"); - return simcall_BODY_comm_iprobe(mbox, type, match_fun, data); -} - -/** - * @ingroup simix_comm_management - */ -void simcall_comm_cancel(smx_activity_t synchro) -{ - simgrid::simix::simcall([synchro] { - simgrid::kernel::activity::CommImplPtr comm = - boost::static_pointer_cast(synchro); - comm->cancel(); - }); + return simgrid::simix::simcall([mbox, type, match_fun, data] { return mbox->iprobe(type, match_fun, data); }); } /** @@ -405,6 +366,41 @@ void unblock(smx_actor_t process) xbt_assert(SIMIX_is_maestro()); SIMIX_simcall_answer(&process->simcall); } +} // namespace simix +} // namespace simgrid +/* ****************************DEPRECATED CALLS******************************* */ +void simcall_process_set_kill_time(smx_actor_t process, double kill_time) +{ + simgrid::simix::simcall([process, kill_time] { process->set_kill_time(kill_time); }); +} +void simcall_comm_cancel(smx_activity_t comm) +{ + simgrid::simix::simcall([comm] { boost::static_pointer_cast(comm)->cancel(); }); +} +void simcall_execution_cancel(smx_activity_t exec) +{ + simgrid::simix::simcall([exec] { boost::static_pointer_cast(exec)->cancel(); }); } +void simcall_execution_set_priority(smx_activity_t exec, double priority) +{ + simgrid::simix::simcall([exec, priority] { + boost::static_pointer_cast(exec)->set_priority(priority); + }); +} + +void simcall_execution_set_bound(smx_activity_t exec, double bound) +{ + simgrid::simix::simcall( + [exec, bound] { boost::static_pointer_cast(exec)->set_bound(bound); }); +} + +smx_activity_t simcall_execution_start(const std::string& name, const std::string& category, double flops_amount, + double priority, double bound, sg_host_t host) +{ + return simgrid::simix::simcall([name, category, flops_amount, priority, bound, host] { + return simgrid::kernel::activity::ExecImplPtr( + new simgrid::kernel::activity::ExecImpl(std::move(name), std::move(category), nullptr, host)) + ->start(flops_amount, priority, bound); + }); }