Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
_XBT_CALL decoration for inthandler function (signal function neeed this in win32)
[simgrid.git] / src / msg / global.c
index 5c60759..9d4e7ec 100644 (file)
@@ -54,6 +54,10 @@ void MSG_global_init(int *argc, char **argv)
     msg_global->current_process = NULL;
     msg_global->registered_functions = xbt_dict_new();
     msg_global->PID = 1;
+    msg_global->task_mallocator = xbt_mallocator_new(256,
+                                                    (pvoid_f_void_t*) task_mallocator_new_f,
+                                                    (void_f_pvoid_t*) task_mallocator_free_f,
+                                                    (void_f_pvoid_t*) task_mallocator_reset_f);
   }
 }
 
@@ -63,30 +67,17 @@ void MSG_global_init(int *argc, char **argv)
 void MSG_paje_output(const char *filename)
 {
   int i;
-  const char *paje_preembule="%EventDef        SetLimits       0\n"
-    "% StartTime       date\n"
-    "% EndTime date\n"
-    "%EndEventDef\n"
+  const char *paje_preembule=
     "%EventDef PajeDefineContainerType 1\n"
     "% NewType string\n"
     "% ContainerType   string\n"
     "% NewName string\n"
     "%EndEventDef\n"
-    "%EventDef PajeDefineEventType     2\n"
-    "% NewType string\n"
-    "% ContainerType   string\n"
-    "% NewName string\n"
-    "%EndEventDef\n"
     "%EventDef PajeDefineStateType     3\n"
     "% NewType string\n"
     "% ContainerType   string\n"
     "% NewName string\n"
     "%EndEventDef\n"
-    "%EventDef PajeDefineVariableType  4\n"
-    "% NewType string\n"
-    "% ContainerType   string\n"
-    "% NewName string\n"
-    "%EndEventDef\n"
     "%EventDef PajeDefineLinkType      5\n"
     "% NewType string\n"
     "% ContainerType   string\n"
@@ -111,34 +102,12 @@ void MSG_paje_output(const char *filename)
     "% Name    string\n"
     "% Type    string\n"
     "%EndEventDef\n"
-    "%EventDef PajeNewEvent    9\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   string\n"
-    "%EndEventDef\n"
     "%EventDef PajeSetState    10\n"
     "% Time    date\n"
     "% EntityType      string\n"
     "% Container       string\n"
     "% Value   string\n"
     "%EndEventDef\n"
-    "%EventDef PajeSetState    101\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   string\n"
-    "% FileName        string\n"
-    "% LineNumber      int\n"
-    "%EndEventDef\n"
-    "%EventDef PajePushState   111\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   string\n"
-    "% FileName        string\n"
-    "% LineNumber      int\n"
-    "%EndEventDef\n"
     "%EventDef PajePushState   11\n"
     "% Time    date\n"
     "% EntityType      string\n"
@@ -151,24 +120,6 @@ void MSG_paje_output(const char *filename)
     "% EntityType      string\n"
     "% Container       string\n"
     "%EndEventDef\n"
-    "%EventDef PajeSetVariable 13\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   double\n"
-    "%EndEventDef\n"
-    "%EventDef PajeAddVariable 14\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   double\n"
-    "%EndEventDef\n"
-    "%EventDef PajeSubVariable 15\n"
-    "% Time    date\n"
-    "% EntityType      string\n"
-    "% Container       string\n"
-    "% Value   double\n"
-    "%EndEventDef\n"
     "%EventDef PajeStartLink   16\n"
     "% Time    date\n"
     "% EntityType      string\n"
@@ -282,7 +233,7 @@ int MSG_get_channel_number(void)
   return msg_global->max_channel;
 }
 
-void __MSG_display_process_status(void) 
+void __MSG_display_process_status(void)
 {
    m_process_t process = NULL;
    xbt_fifo_item_t item = NULL;
@@ -296,17 +247,17 @@ void __MSG_display_process_status(void)
    xbt_fifo_foreach(msg_global->process_list,item,process,m_process_t) {
       simdata_process_t p_simdata = (simdata_process_t) process->simdata;
       simdata_host_t h_simdata=(simdata_host_t)p_simdata->host->simdata;
-      
-      
-      INFO4("MSG:  %s(%d) on %s: %s",
-           process->name,p_simdata->PID,
-           p_simdata->host->name,
-           (process->simdata->blocked)?"[blocked] "
-           :((process->simdata->suspended)?"[suspended] ":""));
+      char *who;
+       
+      asprintf(&who,"MSG:  %s(%d) on %s: %s",
+              process->name,p_simdata->PID,
+              p_simdata->host->name,
+              (process->simdata->blocked)?"[blocked] "
+              :((process->simdata->suspended)?"[suspended] ":""));
       
       for (i=0; i<msg_global->max_channel; i++) {
         if (h_simdata->sleeping[i] == process) {
-           INFO1("\tListening on channel %d.",i);
+           INFO2("%s\tListening on channel %d",who,i);
            break;
         }
       }
@@ -314,32 +265,33 @@ void __MSG_display_process_status(void)
         if(p_simdata->waiting_task) {
            if(p_simdata->waiting_task->simdata->compute) {
               if(p_simdata->put_host) {
-                 INFO2("\tTrying to send a task to Host %s, channel %d.",
-                       p_simdata->put_host->name, p_simdata->put_channel);
+                 INFO4("%s\tTrying to send the task '%s' to Host %s, channel %d.",
+                       who, p_simdata->waiting_task->name,p_simdata->put_host->name, p_simdata->put_channel);
               } else {
-                 INFO1("Waiting for %s to finish.",p_simdata->waiting_task->name);
+                 INFO2("%s\tWaiting for %s to finish.",who,p_simdata->waiting_task->name);
               }
            } else if (p_simdata->waiting_task->simdata->comm) {
-              INFO1("Waiting for %s to be finished transfered.",
-                    p_simdata->waiting_task->name);
+              INFO2("%s\tWaiting for %s to be finished transfered.",
+                    who,p_simdata->waiting_task->name);
            } else {
-             INFO0("UNKNOWN STATUS. Please report this bug.");
+             INFO1("%s\tUNKNOWN STATUS. Please report this bug.",who);
            }
 /*         The following would display the trace of where the maestro thread is, 
             since this is the thread calling this. I'd like to get the other threads to 
             run this to see where they were blocked, but I'm not sure of how to do this */
 /*         xbt_backtrace_display(); */
         } else { /* Must be trying to put a task somewhere */
-           INFO0("UNKNOWN STATUS. Please report this bug.");
+           INFO1("%s\tUNKNOWN STATUS. Please report this bug.",who);
         }
-      } 
+      }
+      free(who);
    }
 }
 
 /* FIXME: Yeah, I'll do it in a portable maner one day [Mt] */
 #include <signal.h>
 
-static void inthandler(int ignored)
+static void _XBT_CALL inthandler(int ignored)
 {
    INFO0("CTRL-C pressed. Displaying status and bailing out");
    __MSG_display_process_status();
@@ -471,7 +423,7 @@ MSG_error_t MSG_main(void)
   }
 
   if (xbt_fifo_size(msg_global->process_list) == 0) {
-    INFO0("Congratulations ! Simulation terminated : all process are over");
+    INFO0("Congratulations ! Simulation terminated : all processes are over");
     return MSG_OK;
   } else {
     INFO0("Oops ! Deadlock or code not perfectly clean.");
@@ -539,6 +491,7 @@ MSG_error_t MSG_clean(void)
   xbt_fifo_free(msg_global->process_to_run);
   xbt_fifo_free(msg_global->process_list);
   xbt_dict_free(&(msg_global->registered_functions));
+  xbt_mallocator_free(msg_global->task_mallocator);
 
   if(msg_global->paje_output) {
     fclose(msg_global->paje_output);