- int i;
- const char *paje_preembule="%EventDef SetLimits 0\n"
- "% StartTime date\n"
- "% EndTime date\n"
- "%EndEventDef\n"
- "%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"
- "% 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 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"
- "% Container string\n"
- "% Value string\n"
- "%EndEventDef\n"
- "%EventDef PajePopState 12\n"
- "% Time date\n"
- "% 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"
- "% 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("%s does not end by \"%s\". It may cause troubles when using Paje\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);
- }