+ int i;
+ const char *paje_preembule=
+ "%EventDef PajeDefineContainerType 1\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 PajeDefineLinkType 5\n"
+ "% NewType string\n"
+ "% ContainerType string\n"
+ "% SourceContainerType string\n"
+ "% DestContainerType string\n"
+ "% NewName string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeDefineEntityValue 6\n"
+ "% NewValue string\n"
+ "% EntityType string\n"
+ "% NewName string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeCreateContainer 7\n"
+ "% Time date\n"
+ "% NewContainer string\n"
+ "% NewContainerType string\n"
+ "% Container string\n"
+ "% NewName string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeDestroyContainer 8\n"
+ "% Time date\n"
+ "% Name string\n"
+ "% Type string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeSetState 10\n"
+ "% Time date\n"
+ "% EntityType string\n"
+ "% Container string\n"
+ "% Value string\n"
+ "%EndEventDef\n"
+ "%EventDef PajePushState 11\n"
+ "% Time date\n"
+ "% EntityType string\n"
+ "% Container string\n"
+ "% Value string\n"
+ "% TaskName string\n"
+ "%EndEventDef\n"
+ "%EventDef PajePopState 12\n"
+ "% Time date\n"
+ "% EntityType string\n"
+ "% Container string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeStartLink 16\n"
+ "% Time date\n"
+ "% EntityType string\n"
+ "% Container string\n"
+ "% Value string\n"
+ "% SourceContainer string\n"
+ "% Key string\n"
+ "%EndEventDef\n"
+ "%EventDef PajeEndLink 17\n"
+ "% Time date\n"
+ "% EntityType string\n"
+ "% Container string\n"
+ "% Value string\n"
+ "% DestContainer string\n"
+ "% Key string\n"
+ "%EndEventDef\n";
+
+ const char *type_definitions = "1 Sim_t 0 Simulation_t\n"
+ "1 H_t Sim_t m_host_t\n"
+ "1 P_t H_t m_process_t\n"
+ "3 S_t P_t \"Process State\"\n"
+ "6 E S_t Executing\n"
+ "6 B S_t Blocked\n"
+ "6 C S_t Communicating\n"
+ "5 Comm Sim_t P_t P_t Communication_t\n";
+
+ const char *ext = ".trace";
+ int ext_len = strlen(ext);
+ int len;
+ m_host_t host;
+ m_process_t process;
+ xbt_fifo_item_t item = NULL;
+
+ xbt_assert0(msg_global, "Initialize MSG first\n");
+ xbt_assert0(!msg_global->paje_output, "Paje output already defined\n");
+ xbt_assert0(filename, "Need a real file name\n");
+
+ len = strlen(filename);
+ if((len<ext_len) || (strncmp(filename+len-ext_len,ext,ext_len))) {
+ CRITICAL2("The name of the Paje trace file \"%s\" does not end by \"%s\". Paje will cause difficulties to read it.\n",
+ filename,ext);
+ }
+
+ msg_global->paje_output=fopen(filename,"w");
+ xbt_assert1(msg_global->paje_output, "Failed to open %s \n",filename);
+
+ fprintf(msg_global->paje_output,"%s",paje_preembule);
+ fprintf(msg_global->paje_output,"%s",type_definitions);
+
+ /* Channels */
+ for(i=0; i<msg_global->max_channel; i++) {
+ fprintf(msg_global->paje_output, "6 COMM_%d Comm \"Channel %d\"\n" ,i,i);
+ }
+ fprintf(msg_global->paje_output,
+ "7 0.0 CUR Sim_t 0 \"MSG simulation\"\n");
+
+ /* Hosts */
+ xbt_fifo_foreach(msg_global->host,item,host,m_host_t) {
+ PAJE_HOST_NEW(host);
+ }
+
+ /* Process */
+ xbt_fifo_foreach(msg_global->process_list,item,process,m_process_t) {
+ PAJE_PROCESS_NEW(process);
+ }