X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/748690bcd412302040caedf121b1c07eec881d0d..7b496924ab1db1e2168e21d85f1bb5c5db2ae264:/src/msg/global.c diff --git a/src/msg/global.c b/src/msg/global.c index 5c60759ce7..44f01c19b5 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -46,7 +46,6 @@ void MSG_global_init(int *argc, char **argv) msg_global = xbt_new0(s_MSG_Global_t,1); - xbt_context_init(); msg_global->host = xbt_fifo_new(); msg_global->process_to_run = xbt_fifo_new(); msg_global->process_list = xbt_fifo_new(); @@ -54,6 +53,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 +66,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 +101,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 +119,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 +232,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 +246,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; imax_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 +264,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 -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 +422,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."); @@ -530,7 +481,6 @@ MSG_error_t MSG_clean(void) while((p=xbt_fifo_pop(msg_global->process_list))) { MSG_process_kill(p); } - xbt_context_exit(); xbt_fifo_foreach(msg_global->host,i,h,m_host_t) { __MSG_host_destroy(h); @@ -539,6 +489,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);