X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/431765cb8198579ac316fa0875b5c8988a501675..cba7a4411e9eb8cd10066db126c413363c65111a:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 15aeec6e93..568bce1617 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -5,8 +5,7 @@ /* */ /* This is somehow the "libc" of SimGrid */ -/* Copyright (c) 2010-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -19,12 +18,12 @@ #include "simgrid/s4u/VirtualMachine.hpp" #include "simgrid/simix.hpp" #include "simgrid/simix/blocking_simcall.hpp" -#include "smx_private.h" +#include "smx_private.hpp" #include "src/kernel/activity/CommImpl.hpp" #include "src/mc/mc_forward.hpp" -#include "src/mc/mc_replay.h" +#include "src/mc/mc_replay.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" -#include "src/simix/smx_host_private.h" +#include "src/simix/smx_host_private.hpp" #include "xbt/ex.h" #include "xbt/functional.hpp" @@ -35,7 +34,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); void simcall_call(smx_actor_t actor) { if (actor != simix_global->maestro_process) { - XBT_DEBUG("Yield actor '%s' on simcall %s (%d)", actor->cname(), SIMIX_simcall_name(actor->simcall.call), + XBT_DEBUG("Yield actor '%s' on simcall %s (%d)", actor->getCname(), SIMIX_simcall_name(actor->simcall.call), (int)actor->simcall.call); SIMIX_process_yield(actor); } else { @@ -111,7 +110,14 @@ smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, s */ void simcall_execution_cancel(smx_activity_t execution) { - simcall_BODY_execution_cancel(execution); + simgrid::simix::kernelImmediate([execution] { + XBT_DEBUG("Cancel synchro %p", execution.get()); + simgrid::kernel::activity::ExecImplPtr exec = + boost::static_pointer_cast(execution); + + if (exec->surf_exec) + exec->surf_exec->cancel(); + }); } /** @@ -126,8 +132,13 @@ void simcall_execution_set_priority(smx_activity_t execution, double priority) { /* checking for infinite values */ xbt_assert(std::isfinite(priority), "priority is not finite!"); + simgrid::simix::kernelImmediate([execution, priority] { - simcall_BODY_execution_set_priority(execution, priority); + simgrid::kernel::activity::ExecImplPtr exec = + boost::static_pointer_cast(execution); + if (exec->surf_exec) + exec->surf_exec->setSharingWeight(priority); + }); } /** @@ -140,7 +151,12 @@ void simcall_execution_set_priority(smx_activity_t execution, double priority) */ void simcall_execution_set_bound(smx_activity_t execution, double bound) { - simcall_BODY_execution_set_bound(execution, bound); + simgrid::simix::kernelImmediate([execution, bound] { + simgrid::kernel::activity::ExecImplPtr exec = + boost::static_pointer_cast(execution); + if (exec->surf_exec) + static_cast(exec->surf_exec)->setBound(bound); + }); } /** @@ -154,19 +170,6 @@ e_smx_state_t simcall_execution_wait(smx_activity_t execution) return (e_smx_state_t) simcall_BODY_execution_wait(execution); } -/** - * \ingroup simix_process_management - * \brief Kills a SIMIX process. - * - * This function simply kills a process. - * - * \param process poor victim - */ -void simcall_process_kill(smx_actor_t process) -{ - simcall_BODY_process_kill(process); -} - /** * \ingroup simix_process_management * \brief Kills all SIMIX processes. @@ -238,23 +241,13 @@ void simcall_process_set_kill_time(smx_actor_t process, double kill_time) if (kill_time <= SIMIX_get_clock() || simix_global->kill_process_function == nullptr) return; - XBT_DEBUG("Set kill time %f for process %s@%s", kill_time, process->cname(), process->host->getCname()); - process->kill_timer = SIMIX_timer_set(kill_time, [=] { + XBT_DEBUG("Set kill time %f for process %s@%s", kill_time, process->getCname(), process->host->getCname()); + process->kill_timer = SIMIX_timer_set(kill_time, [process] { simix_global->kill_process_function(process); process->kill_timer=nullptr; }); } -/** - * \ingroup simix_process_management - * \brief Return the properties - * - * This function returns the properties associated with this process - */ -xbt_dict_t simcall_process_get_properties(smx_actor_t process) -{ - return process->properties; -} /** * \ingroup simix_process_management * \brief Add an on_exit function