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);
}
}
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;
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;
}
}
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);
}
}
}
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.");
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);