From e13d26773d3aa31c3d0eb24816470bcf8ccc26c0 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 20 Nov 2016 18:21:06 +0100 Subject: [PATCH 1/1] more VM functions inlining (plus, getters don't need to be a simcall) --- include/simgrid/simix.h | 1 - src/msg/msg_vm.cpp | 2 +- src/simix/libsmx.cpp | 14 +------------- src/simix/smx_host_private.h | 2 -- src/simix/smx_vm.cpp | 20 +++++++------------- 5 files changed, 9 insertions(+), 30 deletions(-) diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index c3ea65732d..59cc0fb446 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -260,7 +260,6 @@ XBT_PUBLIC(e_smx_state_t) simcall_execution_wait(smx_activity_t execution); /******************************* VM simcalls ********************************/ // Create the vm_workstation at the SURF level XBT_PUBLIC(sg_host_t) simcall_vm_create(const char *name, sg_host_t host); -XBT_PUBLIC(int) simcall_vm_get_state(sg_host_t vm); XBT_PUBLIC(void) simcall_vm_start(sg_host_t vm); XBT_PUBLIC(void) simcall_vm_migrate(sg_host_t vm, sg_host_t dst_pm); XBT_PUBLIC(void *) simcall_vm_get_pm(sg_host_t vm); diff --git a/src/msg/msg_vm.cpp b/src/msg/msg_vm.cpp index 77b9855e3a..35efaa791e 100644 --- a/src/msg/msg_vm.cpp +++ b/src/msg/msg_vm.cpp @@ -52,7 +52,7 @@ void MSG_vm_get_params(msg_vm_t vm, vm_params_t params) /* **** Check state of a VM **** */ static inline int __MSG_vm_is_state(msg_vm_t vm, e_surf_vm_state_t state) { - return simcall_vm_get_state(vm) == state; + return static_cast(vm)->pimpl_vm_->getState() == state; } /** @brief Returns whether the given VM has just created, not running. diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 95f8dfa7d2..1f15dfe8d1 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -205,18 +205,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. @@ -296,7 +284,7 @@ void simcall_vm_save(sg_host_t vm) void simcall_vm_restore(sg_host_t vm) { simgrid::simix::kernelImmediate([vm]() { - if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_SAVED) + 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(), diff --git a/src/simix/smx_host_private.h b/src/simix/smx_host_private.h index 0e0d387973..d87ae8b34e 100644 --- a/src/simix/smx_host_private.h +++ b/src/simix/smx_host_private.h @@ -78,8 +78,6 @@ XBT_PRIVATE void SIMIX_vm_start(sg_host_t ind_vm); XBT_PRIVATE void SIMIX_vm_shutdown(sg_host_t ind_vm, smx_actor_t issuer); // -- -XBT_PRIVATE e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t ind_vm); -// -- XBT_PRIVATE void SIMIX_vm_migrate(sg_host_t ind_vm, sg_host_t ind_dst_pm); SG_END_DECL() diff --git a/src/simix/smx_vm.cpp b/src/simix/smx_vm.cpp index cd04a97195..d1b585fb40 100644 --- a/src/simix/smx_vm.cpp +++ b/src/simix/smx_vm.cpp @@ -67,17 +67,11 @@ static int __can_be_started(sg_host_t vm) void SIMIX_vm_start(sg_host_t vm) { if (__can_be_started(vm)) - static_cast(vm->pimpl_)->setState(SURF_VM_STATE_RUNNING); + static_cast(vm)->pimpl_vm_->setState(SURF_VM_STATE_RUNNING); else THROWF(vm_error, 0, "The VM %s cannot be started", vm->name().c_str()); } - -e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t vm) -{ - return static_cast(vm->pimpl_)->getState(); -} - /** * @brief Function to migrate a SIMIX VM host. * @@ -86,7 +80,7 @@ e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t vm) void SIMIX_vm_migrate(sg_host_t vm, sg_host_t dst_pm) { /* precopy migration makes the VM temporally paused */ - xbt_assert(SIMIX_vm_get_state(vm) == SURF_VM_STATE_SUSPENDED); + xbt_assert(static_cast(vm)->pimpl_vm_->getState() == SURF_VM_STATE_SUSPENDED); /* jump to vm_ws_xigrate(). this will update the vm location. */ static_cast(vm)->pimpl_vm_->migrate(dst_pm); @@ -101,7 +95,7 @@ void SIMIX_vm_migrate(sg_host_t vm, sg_host_t dst_pm) */ void SIMIX_vm_suspend(sg_host_t vm, smx_actor_t issuer) { - if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_RUNNING) + if (static_cast(vm)->pimpl_vm_->getState() != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", vm->name().c_str()); XBT_DEBUG("suspend VM(%s), where %d processes exist", vm->name().c_str(), xbt_swag_size(sg_host_simix(vm)->process_list)); @@ -136,7 +130,7 @@ void simcall_HANDLER_vm_suspend(smx_simcall_t simcall, sg_host_t vm) */ void SIMIX_vm_resume(sg_host_t vm) { - if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_SUSPENDED) + if (static_cast(vm)->pimpl_vm_->getState() != SURF_VM_STATE_SUSPENDED) THROWF(vm_error, 0, "VM(%s) was not suspended", vm->name().c_str()); XBT_DEBUG("resume VM(%s), where %d processes exist", @@ -163,7 +157,7 @@ void SIMIX_vm_save(sg_host_t vm, smx_actor_t issuer) { const char *name = sg_host_get_name(vm); - if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_RUNNING) + if (static_cast(vm)->pimpl_vm_->getState() != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", name); XBT_DEBUG("save VM(%s), where %d processes exist", name, xbt_swag_size(sg_host_simix(vm)->process_list)); @@ -192,7 +186,7 @@ void simcall_HANDLER_vm_save(smx_simcall_t simcall, sg_host_t vm) */ void SIMIX_vm_shutdown(sg_host_t vm, smx_actor_t issuer) { - if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_RUNNING) + if (static_cast(vm)->pimpl_vm_->getState() != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", vm->name().c_str()); XBT_DEBUG("shutdown VM %s, that contains %d processes", @@ -205,7 +199,7 @@ void SIMIX_vm_shutdown(sg_host_t vm, smx_actor_t issuer) } /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */ - static_cast(vm->pimpl_)->setState(SURF_VM_STATE_CREATED); + static_cast(vm)->pimpl_vm_->setState(SURF_VM_STATE_CREATED); } void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, sg_host_t vm) -- 2.20.1