From: thiery Date: Mon, 13 Dec 2010 10:57:18 +0000 (+0000) Subject: Fix tne runall functions X-Git-Tag: v3.6_beta2~778 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/07034eaa7d8fbbc23d0918c256174e5356a330d2?hp=1ebfc270d46a90d0a0b3ba49c9bc3e01bed57caf Fix tne runall functions git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9145 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/replay/state_machine_context.c b/src/replay/state_machine_context.c index ab48214fbf..66145f24f8 100644 --- a/src/replay/state_machine_context.c +++ b/src/replay/state_machine_context.c @@ -76,11 +76,11 @@ static void statem_ctx_resume(smx_context_t new_context) { static void statem_ctx_runall(xbt_dynar_t processes) { smx_context_t old_context; smx_process_t process; + unsigned int cursor; INFO0("Run all"); - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + xbt_dynar_foreach(processes, cursor, process) { statem_context_t ctx = (statem_context_t)SIMIX_process_get_context(process); old_context = smx_current_context; smx_current_context = SIMIX_process_get_context(process); @@ -89,5 +89,6 @@ static void statem_ctx_runall(xbt_dynar_t processes) { ctx->syscall_id==0?NULL:SIMIX_request_get_result(ctx->syscall_id)); smx_current_context = old_context; } + xbt_dynar_reset(processes); } diff --git a/src/simix/smx_context_raw.c b/src/simix/smx_context_raw.c index 57f8c714b1..2ca8451311 100644 --- a/src/simix/smx_context_raw.c +++ b/src/simix/smx_context_raw.c @@ -260,11 +260,12 @@ static void smx_ctx_raw_resume(smx_context_t context) static void smx_ctx_raw_runall(xbt_dynar_t processes) { smx_process_t process; + unsigned int cursor; - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + xbt_dynar_foreach(processes, cursor, process) { smx_ctx_raw_resume(process->context); } + xbt_dynar_reset(processes); } static void smx_ctx_raw_resume_parallel(smx_context_t context) diff --git a/src/simix/smx_context_ruby.c b/src/simix/smx_context_ruby.c index ce1a50ed0c..4051badd6e 100644 --- a/src/simix/smx_context_ruby.c +++ b/src/simix/smx_context_ruby.c @@ -114,11 +114,13 @@ static void smx_ctx_ruby_runall(xbt_dynar_t processes) { smx_process_t process; smx_context_t old_context; - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + unsigned int cursor; + + xbt_dynar_foreach(processes, cursor, process) { old_context = smx_current_context; smx_current_context = process->context; smx_ctx_ruby_resume(smx_current_context); smx_current_context = old_context; - } + } + xbt_dynar_reset(processes); } diff --git a/src/simix/smx_context_sysv.c b/src/simix/smx_context_sysv.c index b13220e9dc..12408c3450 100644 --- a/src/simix/smx_context_sysv.c +++ b/src/simix/smx_context_sysv.c @@ -169,11 +169,12 @@ void smx_ctx_sysv_resume(smx_context_t context) void smx_ctx_sysv_runall(xbt_dynar_t processes) { smx_process_t process; - - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + unsigned int cursor; + + xbt_dynar_foreach(processes, cursor, process) { smx_ctx_sysv_resume(process->context); } + xbt_dynar_reset(processes); } void smx_ctx_sysv_resume_parallel(smx_process_t process) diff --git a/src/simix/smx_context_thread.c b/src/simix/smx_context_thread.c index e1fdeccd66..b2ec07573e 100644 --- a/src/simix/smx_context_thread.c +++ b/src/simix/smx_context_thread.c @@ -145,11 +145,13 @@ static void smx_ctx_thread_suspend(smx_context_t context) static void smx_ctx_thread_runall_serial(xbt_dynar_t processes) { smx_process_t process; - while (xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + unsigned int cursor; + + xbt_dynar_foreach(processes, cursor, process) { xbt_os_sem_release(((smx_ctx_thread_t) process->context)->begin); xbt_os_sem_acquire(((smx_ctx_thread_t) process->context)->end); } + xbt_dynar_reset(processes); } static void smx_ctx_thread_runall_parallel(xbt_dynar_t processes) @@ -160,10 +162,10 @@ static void smx_ctx_thread_runall_parallel(xbt_dynar_t processes) xbt_dynar_foreach(processes, index, process) xbt_os_sem_release(((smx_ctx_thread_t) process->context)->begin); - while(xbt_dynar_length(processes)){ - process = xbt_dynar_pop_as(processes,smx_process_t); + xbt_dynar_foreach(processes, index, process) { xbt_os_sem_acquire(((smx_ctx_thread_t) process->context)->end); } + xbt_dynar_reset(processes); } static smx_context_t smx_ctx_thread_self(void)