Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
implement a SIMIX_processes_as_dynar() function
[simgrid.git] / src / simix / smx_process.c
index a6ed91e..7c54b7a 100644 (file)
@@ -56,7 +56,7 @@ void SIMIX_process_cleanup(smx_process_t process)
 
     if (action->comm.src_proc == process) {
       XBT_DEBUG("Found an unfinished send comm %p (detached = %d), state %d, src = %p, dst = %p",
-          action, action->comm.detached, action->state, action->comm.src_proc, action->comm.dst_proc);
+          action, action->comm.detached, (int)action->state, action->comm.src_proc, action->comm.dst_proc);
       action->comm.src_proc = NULL;
 
       if (action->comm.detached) {
@@ -76,7 +76,7 @@ void SIMIX_process_cleanup(smx_process_t process)
     }
     else if (action->comm.dst_proc == process){
       XBT_DEBUG("Found an unfinished recv comm %p, state %d, src = %p, dst = %p",
-          action, action->state, action->comm.src_proc, action->comm.dst_proc);
+          action, (int)action->state, action->comm.src_proc, action->comm.dst_proc);
       action->comm.dst_proc = NULL;
 
       if (action->comm.detached && action->comm.refcount == 1
@@ -306,7 +306,7 @@ void SIMIX_process_killall(smx_process_t issuer)
     }
   }
 
-  SIMIX_context_runall(simix_global->process_to_run);
+  SIMIX_context_runall();
 
   SIMIX_process_empty_trash();
 }
@@ -370,7 +370,7 @@ void SIMIX_process_suspend(smx_process_t process, smx_process_t issuer)
 
         default:
           xbt_die("Internal error in SIMIX_process_suspend: unexpected action type %d",
-              process->waiting_action->type);
+              (int)process->waiting_action->type);
       }
     }
   }
@@ -410,7 +410,7 @@ void SIMIX_process_resume(smx_process_t process, smx_process_t issuer)
 
         default:
           xbt_die("Internal error in SIMIX_process_resume: unexpected action type %d",
-              process->waiting_action->type);
+              (int)process->waiting_action->type);
       }
     }
     else {
@@ -611,7 +611,7 @@ void SIMIX_process_yield(smx_process_t self)
   if (self->doexception) {
     XBT_DEBUG("Wait, maestro left me an exception");
     self->doexception = 0;
-    RETHROW;
+    SMX_THROW();
   }
   
   if (self->new_host) {
@@ -662,3 +662,13 @@ smx_process_t SIMIX_process_from_PID(int PID)
        }
        return NULL;
 }
+
+/** @brief returns a dynar containg all currently existing processes */
+xbt_dynar_t SIMIX_processes_as_dynar(void) {
+  smx_process_t proc;
+  xbt_dynar_t res = xbt_dynar_new(sizeof(smx_process_t),NULL);
+  xbt_swag_foreach(proc, simix_global->process_list) {
+    xbt_dynar_push(res,&proc);
+  }
+  return res;
+}