Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Connect correctly the log channels manually for windows. I didn't try to compile...
[simgrid.git] / src / simdag / sd_global.c
index ee029e0..b6aaf1e 100644 (file)
@@ -66,6 +66,10 @@ static void _sd_cfg_cb__network_model(const char *name, int pos)
                            surf_network_model_description_size, val);
 }
 
+XBT_LOG_EXTERNAL_CATEGORY(sd_kernel);
+XBT_LOG_EXTERNAL_CATEGORY(sd_task);
+XBT_LOG_EXTERNAL_CATEGORY(sd_workstation);
+
 /* create the config set and register what should be */
 static void sd_config_init(void)
 {
@@ -73,6 +77,11 @@ static void sd_config_init(void)
   if (_sd_init_status)
     return;                    /* Already inited, nothing to do */
 
+  /* Connect our log channels: that must be done manually under windows */
+  XBT_LOG_CONNECT(sd_kernel, sd);
+  XBT_LOG_CONNECT(sd_task, sd);
+  XBT_LOG_CONNECT(sd_workstation, sd);
+   
   _sd_init_status = 1;
   _sd_cfg_set = xbt_cfg_new();
 
@@ -392,7 +401,7 @@ SD_task_t* SD_simulate(double how_long)
 {
   double total_time = 0.0; /* we stop the simulation when total_time >= how_long */
   double elapsed_time = 0.0;
-  SD_task_t task, dst;
+  SD_task_t task, task_safe, dst;
   SD_dependency_t dependency;
   surf_action_t action;
   SD_task_t *changed_tasks = NULL;
@@ -421,7 +430,7 @@ SD_task_t* SD_simulate(double how_long)
   sd_global->watch_point_reached = 0;
 
   /* explore the ready tasks */
-  xbt_swag_foreach(task, sd_global->ready_task_set) {
+  xbt_swag_foreach_safe(task, task_safe, sd_global->ready_task_set) {
     INFO1("Executing task '%s'", SD_task_get_name(task));
     if ((task->state_changed = __SD_task_try_to_run(task))) {
       changed_tasks[changed_task_number++] = task; /* replace NULL by the task */