X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/23f4a1521c0658ea2450c97e70616b6d04de97d7..c080feddf0dd4e58c906e4b7b423b5676a8517e0:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 46a9e5ee92..606f99a616 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -175,25 +175,6 @@ 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 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 dest) -{ - 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; - }); -} - /** * \ingroup simix_vm_management * \brief Start the given VM to the given physical host @@ -205,18 +186,6 @@ void simcall_vm_start(sg_host_t vm) simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_start, vm)); } -/** - * \ingroup simix_vm_management - * \brief Get the state of the given VM - * - * \param vm VM - * \return The state of the VM - */ -int simcall_vm_get_state(sg_host_t vm) -{ - return simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_get_state, vm)); -} - /** * \ingroup simix_vm_management * \brief Get the physical host on which the given VM runs. @@ -242,18 +211,6 @@ void simcall_vm_set_bound(sg_host_t vm, double bound) [vm, bound]() { static_cast(vm)->pimpl_vm_->setBound(bound); }); } -/** - * \ingroup simix_vm_management - * \brief Migrate the given VM to the given physical host - * - * \param vm VM - * \param host Destination physical host - */ -void simcall_vm_migrate(sg_host_t vm, sg_host_t host) -{ - simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_migrate, vm, host)); -} - /** * \ingroup simix_vm_management * \brief Suspend the given VM @@ -295,7 +252,23 @@ void simcall_vm_save(sg_host_t vm) */ void simcall_vm_restore(sg_host_t vm) { - simcall_BODY_vm_restore(vm); + simgrid::simix::kernelImmediate([vm]() { + if (static_cast(vm)->pimpl_vm_->getState() != SURF_VM_STATE_SAVED) + THROWF(vm_error, 0, "VM(%s) was not saved", vm->name().c_str()); + + XBT_DEBUG("restore VM(%s), where %d processes exist", vm->name().c_str(), + xbt_swag_size(sg_host_simix(vm)->process_list)); + + /* jump to vm_ws_restore() */ + static_cast(vm)->pimpl_vm_->restore(); + + smx_actor_t smx_process, smx_process_safe; + xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(vm)->process_list) + { + XBT_DEBUG("resume %s", smx_process->name.c_str()); + SIMIX_process_resume(smx_process); + } + }); } /** @@ -309,36 +282,6 @@ void simcall_vm_shutdown(sg_host_t vm) simcall_BODY_vm_shutdown(vm); } -/** - * \ingroup simix_vm_management - * \brief Destroy the given VM - * - * \param vm VM - */ -void simcall_vm_destroy(sg_host_t vm) -{ - simgrid::simix::kernelImmediate(std::bind(SIMIX_vm_destroy, vm)); -} - -/** - * \ingroup simix_vm_management - * \brief Encompassing simcall to prevent the removal of the src or the dst node at the end of a VM migration - * The simcall actually invokes the following calls: - * simcall_vm_migrate(vm, dst_pm); - * simcall_vm_resume(vm); - * - * It is called at the end of the migration_rx_fun function from msg/msg_vm.c - * - * \param vm VM to migrate - * \param src_pm Source physical host - * \param dst_pmt Destination physical host - */ -void simcall_vm_migratefrom_resumeto(sg_host_t vm, sg_host_t src_pm, sg_host_t dst_pm) -{ - simgrid::simix::kernelImmediate(std::bind( - SIMIX_vm_migratefrom_resumeto, vm, src_pm, dst_pm)); -} - /** * \ingroup simix_process_management * \brief Kills a SIMIX process. @@ -401,8 +344,6 @@ void simcall_process_join(smx_actor_t process, double timeout) */ void simcall_process_suspend(smx_actor_t process) { - xbt_assert(process, "Invalid parameters"); - simcall_BODY_process_suspend(process); }