Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
remove unused variable that raises warning (when treated as error ...)
[simgrid.git] / src / simix / smx_global.c
index e7b4a04d50b7e3673aee08e1ebac002f1bea9a93..4555093bcdd4ee4560d03b60ca7c27e5fb151aac 100644 (file)
 #include "xbt/ex.h"             /* ex_backtrace_display */
 #include "mc/mc.h"
 
-XBT_LOG_EXTERNAL_CATEGORY(simix);
-XBT_LOG_EXTERNAL_CATEGORY(simix_deployment);
-XBT_LOG_EXTERNAL_CATEGORY(simix_environment);
-XBT_LOG_EXTERNAL_CATEGORY(simix_host);
-XBT_LOG_EXTERNAL_CATEGORY(simix_process);
-XBT_LOG_EXTERNAL_CATEGORY(simix_synchro);
-XBT_LOG_EXTERNAL_CATEGORY(simix_context);
+XBT_LOG_NEW_CATEGORY(simix, "All SIMIX categories");
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_kernel, simix,
                                 "Logging specific to SIMIX (kernel)");
 
@@ -65,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_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);
-    XBT_LOG_CONNECT(simix_context, simix);
-
     simix_global = xbt_new0(s_smx_global_t, 1);
 
     simix_global->process_to_run = xbt_dynar_new(sizeof(smx_process_t), NULL);
@@ -180,6 +165,14 @@ XBT_INLINE double SIMIX_get_clock(void)
   }
 }
 
+static int process_syscall_color(void *p) {
+  e_smx_simcall_t s = (*((smx_process_t *)p))->simcall.call;
+
+  if (s == SIMCALL_NONE || s == SIMCALL_PROCESS_KILL) return 2;
+  else if (s == SIMCALL_PROCESS_RESUME)  return 1;
+  else return 0;
+}
+
 void SIMIX_run(void)
 {
   double time = 0;
@@ -200,6 +193,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);