X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/02bf6f381e18b56f56196027041aec66d2a0db80..311d21362aff192fe4d49d8cc6ed907e9e3f8fb0:/src/simix/smx_synchro.c diff --git a/src/simix/smx_synchro.c b/src/simix/smx_synchro.c index 70f224989d..64d4d699eb 100644 --- a/src/simix/smx_synchro.c +++ b/src/simix/smx_synchro.c @@ -153,9 +153,10 @@ smx_cond_t SIMIX_cond_init() */ void SIMIX_cond_signal(smx_cond_t cond) { + smx_process_t proc = NULL; DEBUG1("Signal condition %p", cond); xbt_assert0((cond != NULL), "Invalid parameters"); - smx_process_t proc = NULL; + if (xbt_swag_size(cond->sleeping) >= 1) { proc = xbt_swag_extract(cond->sleeping); @@ -232,8 +233,9 @@ void __SIMIX_cond_wait(smx_cond_t cond) void SIMIX_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double max_duration) { - xbt_assert0((mutex != NULL), "Invalid parameters"); + smx_action_t act_sleep; + xbt_assert0((mutex != NULL), "Invalid parameters"); DEBUG1("Timed wait condition %p", cond); cond->mutex = mutex; @@ -268,10 +270,11 @@ void SIMIX_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, */ void SIMIX_cond_broadcast(smx_cond_t cond) { - xbt_assert0((cond != NULL), "Invalid parameters"); smx_process_t proc = NULL; smx_process_t proc_next = NULL; + xbt_assert0((cond != NULL), "Invalid parameters"); + DEBUG1("Broadcast condition %p", cond); xbt_swag_foreach_safe(proc, proc_next, cond->sleeping) { xbt_swag_remove(proc, cond->sleeping); @@ -312,3 +315,17 @@ void SIMIX_cond_destroy(smx_cond_t cond) return; } } + +void SIMIX_cond_display_info(smx_cond_t cond) +{ + if (cond == NULL) + return; + else { + smx_process_t process = NULL; + + INFO0("Blocked process on this condition:"); + xbt_swag_foreach(process,cond->sleeping) { + INFO2("\t %s running on host %s",process->name,process->simdata->smx_host->name); + } + } +}