Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Killall can now be called from an agent
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 15 Apr 2005 22:19:03 +0000 (22:19 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 15 Apr 2005 22:19:03 +0000 (22:19 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1228 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/msg/global.c
src/msg/m_process.c

index 2d000f4..1f6548f 100644 (file)
@@ -490,16 +490,23 @@ int MSG_process_killall(int reset_PIDs)
 {
   xbt_fifo_item_t i = NULL;
   m_process_t p = NULL;
 {
   xbt_fifo_item_t i = NULL;
   m_process_t p = NULL;
+  m_process_t self = MSG_process_self();
 
   while((p=xbt_fifo_shift(msg_global->process_list))) {
 
   while((p=xbt_fifo_shift(msg_global->process_list))) {
-    MSG_process_kill(p);
+    if(p!=self) MSG_process_kill(p);
   }
   }
-  xbt_context_empty_trash();
+
   if(reset_PIDs>0) {
     msg_global->PID = reset_PIDs; 
     msg_global->session++;
  }
 
   if(reset_PIDs>0) {
     msg_global->PID = reset_PIDs; 
     msg_global->session++;
  }
 
+  xbt_context_empty_trash();
+
+  if(self) {
+    xbt_context_yield();
+  }
+
   return msg_global->PID;
 }
 
   return msg_global->PID;
 }
 
index 36ed639..c80cc6b 100644 (file)
@@ -155,9 +155,13 @@ void MSG_process_kill(m_process_t process)
        surf_workstation_resource->common_public->
          action_change_state(p_simdata->waiting_task->simdata->comm,SURF_ACTION_FAILED);
       else
        surf_workstation_resource->common_public->
          action_change_state(p_simdata->waiting_task->simdata->comm,SURF_ACTION_FAILED);
       else
-       fprintf(stderr,"UNKNOWN STATUS. Please report this bug.\n");
+       CRITICAL0("UNKNOWN STATUS. Please report this bug.");
     } else { /* Must be trying to put a task somewhere */
     } else { /* Must be trying to put a task somewhere */
-      fprintf(stderr,"UNKNOWN STATUS. Please report this bug.\n");
+      if(process==MSG_process_self()) {
+       return;
+      } else {
+       CRITICAL0("UNKNOWN STATUS. Please report this bug.");
+      }
     }
   }
 
     }
   }