Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
no need to know who's resuming an actor
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 17 Nov 2016 10:23:26 +0000 (11:23 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 17 Nov 2016 10:23:26 +0000 (11:23 +0100)
src/simix/ActorImpl.cpp
src/simix/ActorImpl.hpp
src/simix/smx_host_private.h
src/simix/smx_vm.cpp

index fe4d45b..9d3f6e5 100644 (file)
@@ -518,7 +518,7 @@ void SIMIX_process_throw(smx_actor_t process, xbt_errcat_t cat, int value, const
   SMX_EXCEPTION(process, cat, value, msg);
 
   if (process->suspended)
-    SIMIX_process_resume(process,SIMIX_process_self());
+    SIMIX_process_resume(process);
 
   /* cancel the blocking synchro if any */
   if (process->waiting_synchro) {
@@ -632,12 +632,12 @@ smx_activity_t SIMIX_process_suspend(smx_actor_t process, smx_actor_t issuer)
 }
 
 void simcall_HANDLER_process_resume(smx_simcall_t simcall, smx_actor_t process){
-  SIMIX_process_resume(process, simcall->issuer);
+  SIMIX_process_resume(process);
 }
 
-void SIMIX_process_resume(smx_actor_t process, smx_actor_t issuer)
+void SIMIX_process_resume(smx_actor_t process)
 {
-  XBT_IN("process = %p, issuer = %p", process, issuer);
+  XBT_IN("process = %p", process);
 
   if(process->context->iwannadie) {
     XBT_VERB("Ignoring request to suspend a process that is currently dying.");
@@ -647,14 +647,9 @@ void SIMIX_process_resume(smx_actor_t process, smx_actor_t issuer)
   if(!process->suspended) return;
   process->suspended = 0;
 
-  /* If we are resuming another process, resume the synchronization it was waiting for
-     if any. Otherwise add it to the list of process to run in the next round. */
-  if (process != issuer) {
-
-    if (process->waiting_synchro) {
-      process->waiting_synchro->resume();
-    }
-  } else XBT_WARN("Strange. Process %p is trying to resume himself.", issuer);
+  /* resume the synchronization that was blocking the resumed process. */
+  if (process->waiting_synchro)
+    process->waiting_synchro->resume();
 
   XBT_OUT();
 }
index b53e78e..ff1073c 100644 (file)
@@ -126,7 +126,7 @@ XBT_PRIVATE void SIMIX_process_yield(smx_actor_t self);
 XBT_PRIVATE void SIMIX_process_exception_terminate(xbt_ex_t * e);
 XBT_PRIVATE void SIMIX_process_change_host(smx_actor_t process, sg_host_t dest);
 XBT_PRIVATE smx_activity_t SIMIX_process_suspend(smx_actor_t process, smx_actor_t issuer);
-XBT_PRIVATE void SIMIX_process_resume(smx_actor_t process, smx_actor_t issuer);
+XBT_PRIVATE void SIMIX_process_resume(smx_actor_t process);
 XBT_PRIVATE int SIMIX_process_get_PID(smx_actor_t self);
 XBT_PRIVATE void* SIMIX_process_get_data(smx_actor_t process);
 XBT_PRIVATE void SIMIX_process_set_data(smx_actor_t process, void *data);
index bb557e5..2f88ed5 100644 (file)
@@ -75,7 +75,7 @@ XBT_PRIVATE void SIMIX_vm_suspend(sg_host_t ind_vm, smx_actor_t issuer);
 // --
 XBT_PRIVATE void SIMIX_vm_save(sg_host_t ind_vm, smx_actor_t issuer);
 
-XBT_PRIVATE void SIMIX_vm_restore(sg_host_t ind_vm, smx_actor_t issuer);
+XBT_PRIVATE void SIMIX_vm_restore(sg_host_t ind_vm);
 // --
 XBT_PRIVATE void SIMIX_vm_start(sg_host_t ind_vm);
 
index da21695..dcf61aa 100644 (file)
@@ -170,7 +170,7 @@ void SIMIX_vm_resume(sg_host_t vm, smx_actor_t issuer)
   smx_actor_t smx_process, smx_process_safe;
   xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(vm)->process_list) {
     XBT_DEBUG("resume %s", smx_process->name.c_str());
-    SIMIX_process_resume(smx_process, issuer);
+    SIMIX_process_resume(smx_process);
   }
 }
 
@@ -218,7 +218,7 @@ void simcall_HANDLER_vm_save(smx_simcall_t simcall, sg_host_t vm)
  *
  * @param vm the vm host to restore (a sg_host_t)
  */
-void SIMIX_vm_restore(sg_host_t vm, smx_actor_t issuer)
+void SIMIX_vm_restore(sg_host_t vm)
 {
   if (SIMIX_vm_get_state(vm) != SURF_VM_STATE_SAVED)
     THROWF(vm_error, 0, "VM(%s) was not saved", vm->name().c_str());
@@ -232,13 +232,13 @@ void SIMIX_vm_restore(sg_host_t vm, smx_actor_t issuer)
   smx_actor_t smx_process, smx_process_safe;
   xbt_swag_foreach_safe(smx_process, smx_process_safe, sg_host_simix(vm)->process_list) {
     XBT_DEBUG("resume %s", smx_process->name.c_str());
-    SIMIX_process_resume(smx_process, issuer);
+    SIMIX_process_resume(smx_process);
   }
 }
 
 void simcall_HANDLER_vm_restore(smx_simcall_t simcall, sg_host_t vm)
 {
-  SIMIX_vm_restore(vm, simcall->issuer);
+  SIMIX_vm_restore(vm);
 }