X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/535d2553faf8b078c43120ad0a0dd5dcf977837a..23f4a1521c0658ea2450c97e70616b6d04de97d7:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 261f22c774..46a9e5ee92 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -17,15 +17,17 @@ #include +#include #include -#include "src/mc/mc_replay.h" +#include "mc/mc.h" #include "smx_private.h" +#include "src/kernel/activity/SynchroComm.hpp" #include "src/mc/mc_forward.hpp" -#include "xbt/ex.h" -#include "mc/mc.h" +#include "src/mc/mc_replay.h" +#include "src/plugins/vm/VirtualMachineImpl.hpp" #include "src/simix/smx_host_private.h" -#include "src/kernel/activity/SynchroComm.hpp" +#include "xbt/ex.h" #include @@ -95,15 +97,12 @@ smx_activity_t simcall_execution_start(const char *name, * amount between each pair of hosts * \param amount the SURF action amount * \param rate the SURF action rate + * \param timeout timeout * \return A new SIMIX execution synchronization */ -smx_activity_t simcall_execution_parallel_start(const char *name, - int host_nb, - sg_host_t *host_list, - double *flops_amount, - double *bytes_amount, - double amount, - double rate) +smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list, + double* flops_amount, double* bytes_amount, double amount, double rate, + double timeout) { int i,j; /* checking for infinite values */ @@ -120,11 +119,8 @@ smx_activity_t simcall_execution_parallel_start(const char *name, xbt_assert(std::isfinite(amount), "amount is not finite!"); xbt_assert(std::isfinite(rate), "rate is not finite!"); - return simcall_BODY_execution_parallel_start(name, host_nb, host_list, - flops_amount, - bytes_amount, - amount, rate); - + return simcall_BODY_execution_parallel_start(name, host_nb, host_list, flops_amount, bytes_amount, amount, rate, + timeout); } /** @@ -179,19 +175,23 @@ e_smx_state_t simcall_execution_wait(smx_activity_t execution) return (e_smx_state_t) simcall_BODY_execution_wait(execution); } - /** * \ingroup simix_vm_management * \brief Create a VM on the given physical host. * * \param name VM name - * \param host Physical host + * \param dest Physical host on which to create the VM * * \return The host object of the VM */ -sg_host_t simcall_vm_create(const char *name, sg_host_t phys_host) +sg_host_t simcall_vm_create(const char* name, sg_host_t dest) { - return simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_create, name, phys_host)); + return simgrid::simix::kernelImmediate([&name, &dest] { + sg_host_t host = new simgrid::s4u::VirtualMachine(name, dest); + host->extension_set(new simgrid::simix::Host()); + + return host; + }); } /** @@ -219,19 +219,27 @@ int simcall_vm_get_state(sg_host_t vm) /** * \ingroup simix_vm_management - * \brief Get the name of the physical host on which the given VM runs. + * \brief Get the physical host on which the given VM runs. * * \param vm VM - * \return The name of the physical host + * \return The physical host */ void *simcall_vm_get_pm(sg_host_t vm) { - return simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_get_pm, vm)); + return simgrid::simix::kernelImmediate( + [vm]() { return static_cast(vm)->pimpl_vm_->getPm(); }); } +/** + * @brief Function to set the CPU bound of the given SIMIX VM host. + * + * @param host the vm host (a sg_host_t) + * @param bound bound (a double) + */ void simcall_vm_set_bound(sg_host_t vm, double bound) { - simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_set_bound, vm, bound)); + simgrid::simix::kernelImmediate( + [vm, bound]() { static_cast(vm)->pimpl_vm_->setBound(bound); }); } /**