- process = xbt_dynar_get_as(vm->processes,0,m_process_t);
- MSG_process_kill(process);
+ 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) {
+ unsigned int cpt;
+ msg_process_t process;
+ xbt_dynar_foreach(vm->processes,cpt,process) {
+ //FIXME: Slow ?
+ simdata_process_t simdata = simcall_process_get_data(process);
+ simdata->vm = NULL;