X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bc227ec698a0dcac6be3bd125dedd6dff346d1dd..e51ea751d20f2437b9b350a3bab1db3c257fb54f:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index 651146425b..0de13d2811 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -12,6 +12,7 @@ #include "xbt/ex.h" /* ex_backtrace_display */ #include "mc/mc.h" +XBT_LOG_NEW_CATEGORY(simix, "All SIMIX categories"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_kernel, simix, "Logging specific to SIMIX (kernel)"); @@ -58,15 +59,6 @@ void SIMIX_global_init(int *argc, char **argv) s_smx_process_t proc; if (!simix_global) { - /* Connect our log channels: that must be done manually under windows */ - XBT_LOG_CONNECT(simix_context, simix); - XBT_LOG_CONNECT(simix_deployment, simix); - XBT_LOG_CONNECT(simix_environment, simix); - XBT_LOG_CONNECT(simix_host, simix); - XBT_LOG_CONNECT(simix_kernel, simix); - XBT_LOG_CONNECT(simix_process, simix); - XBT_LOG_CONNECT(simix_synchro, simix); - simix_global = xbt_new0(s_smx_global_t, 1); simix_global->process_to_run = xbt_dynar_new(sizeof(smx_process_t), NULL); @@ -173,6 +165,19 @@ XBT_INLINE double SIMIX_get_clock(void) } } +static int process_syscall_color(void *p) +{ + switch ((*(smx_process_t *)p)->simcall.call) { + case SIMCALL_NONE: + case SIMCALL_PROCESS_KILL: + return 2; + case SIMCALL_PROCESS_RESUME: + return 1; + default: + return 0; + } +} + void SIMIX_run(void) { double time = 0; @@ -193,6 +198,7 @@ void SIMIX_run(void) XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu", xbt_dynar_length(simix_global->process_to_run)); SIMIX_process_runall(); + xbt_dynar_three_way_partition(simix_global->process_that_ran, process_syscall_color); xbt_dynar_foreach(simix_global->process_that_ran, iter, process) { if (process->simcall.call != SIMCALL_NONE) { SIMIX_simcall_pre(&process->simcall, 0);