Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix segfault when using XBT_... and when process have no name.
[simgrid.git] / src / simix / smx_process.c
index bd34137..411bfdf 100644 (file)
@@ -270,6 +270,7 @@ void SIMIX_process_kill(smx_process_t process) {
         break;
 
       case SIMIX_ACTION_COMMUNICATE:
+        xbt_fifo_remove(process->comms, process->waiting_action);
         SIMIX_comm_destroy(process->waiting_action);
         break;
 
@@ -472,7 +473,9 @@ const char* SIMIX_process_self_get_name(void) {
 
 const char* SIMIX_process_get_name(smx_process_t process)
 {
-  return process->name;
+  if(process->name)
+         return process->name;
+  return "";
 }
 
 smx_process_t SIMIX_process_get_by_name(const char* name)
@@ -643,7 +646,21 @@ void SIMIX_process_set_context(smx_process_t p,smx_context_t c) {
 /**
  * \brief Returns the list of processes to run.
  */
-XBT_INLINE xbt_dynar_t SIMIX_process_get_runnable(void)
+xbt_dynar_t SIMIX_process_get_runnable(void)
 {
   return simix_global->process_to_run;
 }
+
+/**
+ * \brief Returns the process from PID.
+ */
+smx_process_t SIMIX_process_from_PID(int PID)
+{
+       smx_process_t proc;
+       xbt_swag_foreach(proc, simix_global->process_list)
+       {
+        if(proc->pid == PID)
+        return proc;
+       }
+       return NULL;
+}