From: Martin Quinson Date: Thu, 17 Nov 2016 10:23:26 +0000 (+0100) Subject: no need to know who's resuming an actor X-Git-Tag: v3_14~179 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/bd02d8d308feab888032539a30702bf2fb4b445f no need to know who's resuming an actor --- diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index fe4d45b1f0..9d3f6e5d74 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -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(); } diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index b53e78e239..ff1073cc80 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -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); diff --git a/src/simix/smx_host_private.h b/src/simix/smx_host_private.h index bb557e5b9b..2f88ed5e3e 100644 --- a/src/simix/smx_host_private.h +++ b/src/simix/smx_host_private.h @@ -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); diff --git a/src/simix/smx_vm.cpp b/src/simix/smx_vm.cpp index da216956c4..dcf61aac33 100644 --- a/src/simix/smx_vm.cpp +++ b/src/simix/smx_vm.cpp @@ -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); }