Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start to fill the NEWS file
[simgrid.git] / src / msg / msg_vm.c
index 426bbb7..d5bff35 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (c) 2012. The SimGrid Team. All rights reserved.               */
+/* Copyright (c) 2012-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -28,7 +29,7 @@ msg_vm_t MSG_vm_start(msg_host_t location, const char *name, int coreAmount) {
   res->processes = xbt_dynar_new(sizeof(msg_process_t),NULL);
 
   xbt_swag_insert(res,msg_global->vms);
-  xbt_swag_insert(res,location->vms);
+  xbt_swag_insert(res, MSG_host_priv(location)->vms);
 
   #ifdef HAVE_TRACING
   TRACE_msg_vm_create(name, location);
@@ -90,7 +91,7 @@ void MSG_vm_bind(msg_vm_t vm, msg_process_t process) {
 /** @brief Removes the given process from the given VM, and kill it
  *  @ingroup msg_VMs
  *
- *  Will raise a not_found exception if the process were not binded to that VM
+ *  Will raise a not_found exception if the process were not bound to that VM
  */
 void MSG_vm_unbind(msg_vm_t vm, msg_process_t process) {
   int pos = xbt_dynar_search(vm->processes,process);
@@ -111,8 +112,8 @@ void MSG_vm_migrate(msg_vm_t vm, msg_host_t destination) {
   xbt_dynar_foreach(vm->processes,cpt,process) {
     MSG_process_migrate(process,destination);
   }
-  xbt_swag_remove(vm,vm->location->vms);
-  xbt_swag_insert_at_tail(vm,destination->vms);
+  xbt_swag_remove(vm, MSG_host_priv(vm->location)->vms);
+  xbt_swag_insert_at_tail(vm, MSG_host_priv(destination)->vms);
   
   #ifdef HAVE_TRACING
   TRACE_msg_vm_change_host(vm,vm->location,destination);
@@ -171,7 +172,7 @@ 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) {
+  while (!xbt_dynar_is_empty(vm->processes)) {
     process = xbt_dynar_get_as(vm->processes,0,msg_process_t);
     MSG_process_kill(process);
   }
@@ -181,29 +182,29 @@ void MSG_vm_shutdown(msg_vm_t vm)
   #endif
 
 }
+
 /**
  * \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);
-
+  xbt_dynar_t process_list = 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(vm->processes, cpt, process) {
+    xbt_dynar_push_as(process_list, msg_process_t, process);
   }
 
-  xbt_dynar_foreach(new_processes, cpt, process) {
-    MSG_vm_bind(vm,process);
+  xbt_dynar_foreach(process_list, cpt, process) {
+    msg_process_t new_process = MSG_process_restart(process);
+    MSG_vm_bind(vm, new_process);
   }
 
-  xbt_dynar_free(&new_processes);
+  xbt_dynar_free(&process_list);
 }
+
 /** @brief Destroy a msg_vm_t.
  *  @ingroup msg_VMs
  */
@@ -220,7 +221,7 @@ void MSG_vm_destroy(msg_vm_t vm) {
   TRACE_msg_vm_end(vm);
   #endif
 
-
+  xbt_free(vm->name);
   xbt_dynar_free(&vm->processes);
   xbt_free(vm);
 }