+
+/* **** 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;
+}
+
+/** @brief Returns whether the given VM has just reated, not running.
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_created(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_CREATED);
+}
+
+/** @brief Returns whether the given VM is currently running
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_running(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_RUNNING);
+}
+
+/** @brief Returns whether the given VM is currently migrating
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_migrating(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_MIGRATING);
+}
+
+/** @brief Returns whether the given VM is currently suspended, not running.
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_suspended(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_SUSPENDED);
+}
+
+/** @brief Returns whether the given VM is being saved (FIXME: live saving or not?).
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_saving(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_SAVING);
+}
+
+/** @brief Returns whether the given VM has been saved, not running.
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_saved(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_SAVED);
+}
+
+/** @brief Returns whether the given VM is being restored, not running.
+ * @ingroup msg_VMs
+ */
+int MSG_vm_is_restoring(msg_vm_t vm)
+{
+ return __MSG_vm_is_state(vm, SURF_VM_STATE_RESTORING);
+}
+
+
+
+/* ------------------------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
+