+void MSG_vm_shutdown(msg_vm_t vm)
+{
+ msg_process_t process;
+ XBT_DEBUG("%lu processes in the VM", xbt_dynar_length(vm->processes));
+ while (xbt_dynar_length(vm->processes) > 0) {
+ process = xbt_dynar_get_as(vm->processes,0,msg_process_t);
+ MSG_process_kill(process);
+ }
+}
+/**
+ * \ingroup msg_VMs
+ * \brief Reboot the VM, restarting all the processes in it.
+ */
+void MSG_vm_reboot(msg_vm_t vm)
+{
+ xbt_dynar_t new_processes = xbt_dynar_new(sizeof(msg_process_t),NULL);
+
+ msg_process_t process;
+ unsigned int cpt;
+
+ xbt_dynar_foreach(vm->processes,cpt,process) {
+ msg_process_t new_process = MSG_process_restart(process);
+ xbt_dynar_push_as(new_processes,msg_process_t,new_process);
+
+ }
+
+ xbt_dynar_foreach(new_processes, cpt, process) {
+ MSG_vm_bind(vm,process);
+ }
+
+ xbt_dynar_free(&new_processes);
+}
+/** @brief Destroy a msg_vm_t.
+ * @ingroup msg_VMs
+ */
+void MSG_vm_destroy(msg_vm_t vm) {