Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 24 May 2011 14:05:38 +0000 (16:05 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 24 May 2011 14:05:38 +0000 (16:05 +0200)
48 files changed:
ChangeLog
buildtools/Cmake/AddTests.cmake
buildtools/Cmake/AddTestsWin.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MaintainerMode.cmake
buildtools/Cmake/memcheck_tests.cmake
buildtools/Cmake/update_tesh.pl [changed mode: 0644->0755]
doc/FAQ.doc
examples/msg/tracing/CMakeLists.txt
examples/msg/tracing/procmig.tesh
examples/msg/tracing/tasks.tesh
examples/msg/tracing/volume.c [deleted file]
examples/msg/tracing/volume.tesh [deleted file]
examples/smpi/smpi_traced.tesh
include/instr/instr.h
include/surf/simgrid_dtd.h
include/xbt/graphxml.h
src/instr/instr_config.c
src/instr/instr_interface.c
src/instr/instr_msg_task.c
src/instr/instr_msg_volume.c [deleted file]
src/instr/instr_paje_trace.c
src/instr/instr_private.h
src/instr/instr_resource_utilization.c
src/instr/instr_routing.c
src/instr/instr_simdag.c
src/instr/instr_smpi.c
src/instr/instr_smx.c [deleted file]
src/instr/instr_surf.c
src/msg/msg_mailbox.c
src/simdag/dax_dtd.c
src/simdag/dax_dtd.h
src/simdag/dax_dtd.l
src/simix/smx_host.c
src/simix/smx_network.c
src/simix/smx_process.c
src/smpi/smpirun.in
src/surf/cpu.c
src/surf/cpu_im.c
src/surf/network.c
src/surf/network_gtnets.c
src/surf/network_im.c
src/surf/simgrid_dtd.c
src/surf/simgrid_dtd.l
src/xbt/graphxml.c
src/xbt/graphxml.l
tools/graphicator/graphicator.c
tools/graphicator/graphicator.tesh

index 9255ae0..1337671 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,7 +3,8 @@ SimGrid (3.6) unstable; urgency=low
  Java and Ruby: 
  * Bindings now constitute their own package, separated from the main one.
    Rational: reduce our maintainance nightmare by reducing the module coupling.
-   They will soon be released on their own on gforge. In the meanwhile:
+   They will soon be released on their own on gforge. 
+ * In the meanwhile:
    svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-java
    svn co svn://scm.gforge.inria.fr/svn/simgrid/contrib/trunk/simgrid-ruby
  
@@ -11,6 +12,15 @@ SimGrid (3.6) unstable; urgency=low
  * It's not quite deprecated for now because we have no replacement,
    but it may soon become the case.
 
+ SMPI
+ * New MPI functions supported: MPI_Comm_disconnect, MPI_Comm_get_name
+ * Fortran: New user-level cache variable to store the rank of the running
+   process. This improves performance by an order of magnitude.
+ * C: New coccinelle script to automatically locate and modifiy global and
+   local static variables.
+ * Improved SMPI network model with a sender-side gap to account for multiple
+   parallel sends.
+
  MSG
  * New function MSG_comm_get_status(). MSG_comm_test() and MSG_comm_testany()
    only say if a communication is finished, no matter whether it succeeded or
index 0804955..5865d11 100644 (file)
@@ -374,7 +374,6 @@ endif(HAVE_GTNETS)
 IF(HAVE_TRACING)
   ADD_TEST(tracing-ms                          ${CMAKE_BINARY_DIR}/bin/tesh    --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg        --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/ms.tesh)
   ADD_TEST(tracing-categories          ${CMAKE_BINARY_DIR}/bin/tesh    --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg        --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/categories.tesh)
-  ADD_TEST(tracing-volume                      ${CMAKE_BINARY_DIR}/bin/tesh    --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg        --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/volume.tesh)
   ADD_TEST(tracing-tasks                       ${CMAKE_BINARY_DIR}/bin/tesh    --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg        --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/tasks.tesh)
   ADD_TEST(tracing-process-migration ${CMAKE_BINARY_DIR}/bin/tesh      --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg        --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/procmig.tesh)
   ADD_TEST(graphicator ${CMAKE_BINARY_DIR}/bin/tesh --setenv srcdir=${CMAKE_HOME_DIRECTORY} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_HOME_DIRECTORY}/tools/graphicator graphicator.tesh)
index 5061dd9..9174abb 100644 (file)
@@ -78,7 +78,6 @@ ADD_TEST(msg-icomms-waitany ${CMAKE_HOME_DIRECTORY}/examples/msg/icomms/peer3 ${
 IF(HAVE_TRACING)\r
   ADD_TEST(tracing-ms perl ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/tesh.pl ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/ms.tesh)\r
   ADD_TEST(tracing-categories perl ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/tesh.pl ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/categories.tesh)\r
-  ADD_TEST(tracing-volume perl ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/tesh.pl ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/volume.tesh)\r
   ADD_TEST(tracing-tasks perl ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/tesh.pl ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/tasks.tesh)\r
   ADD_TEST(tracing-process-migration perl ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/tesh.pl ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/procmig.tesh)\r
 ENDIF(HAVE_TRACING)\r
index 8375a45..d65e466 100644 (file)
@@ -319,8 +319,6 @@ set(TRACING_SRC
        src/instr/instr_paje_trace.c
        src/instr/instr_msg_task.c
        src/instr/instr_msg_process.c
-       src/instr/instr_msg_volume.c
-       src/instr/instr_smx.c
        src/instr/instr_surf.c
        src/instr/instr_smpi.c
        src/instr/instr_simdag.c
index 3aaaaae..d1fa739 100644 (file)
@@ -43,6 +43,7 @@ set(string10 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
 set(string11 "'s/#include <unistd.h>/#if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)\\n#  ifndef __STRICT_ANSI__\\n#    include <io.h>\\n#    include <process.h>\\n#  endif\\n#else\\n#  include <unistd.h>\\n#endif/g'")
 set(string12 "'s/#if defined(_WIN32)/#if defined(_XBT_WIN32)/g'")
 set(string13 "'s/#include <unistd.h>/#if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)\\n#  ifndef __STRICT_ANSI__\\n#    include <io.h>\\n#    include <process.h>\\n#  endif\\n#else\\n#  include <unistd.h>\\n#endif/g'")
+set(string14 "'\\!^ \\* Generated [0-9/]\\{10\\} [0-9:]\\{8\\}\\.$$!d'")
 
 ADD_CUSTOM_COMMAND(
        OUTPUT  ${CMAKE_HOME_DIRECTORY}/include/surf/simgrid_dtd.h
@@ -58,13 +59,16 @@ ADD_CUSTOM_COMMAND(
                                        
        #${CMAKE_HOME_DIRECTORY}/src/surf/simgrid_dtd.l: ${CMAKE_HOME_DIRECTORY}/src/surf/simgrid.dtd
        COMMAND ${FLEXML_EXE} --root-tags platform -b 1000000 -P surfxml --sysid=http://simgrid.gforge.inria.fr/simgrid.dtd -S src/surf/simgrid_dtd.l -L src/surf/simgrid.dtd
+       COMMAND ${SED_EXE} -i ${string14} src/surf/simgrid_dtd.l
        COMMAND ${CMAKE_COMMAND} -E echo "src/surf/simgrid_dtd.l"
        #${CMAKE_HOME_DIRECTORY}/src/xbt/graphxml.l: ${CMAKE_HOME_DIRECTORY}/src/xbt/graphxml.dtd
        COMMAND ${FLEXML_EXE} -b 1000000 -P graphxml --sysid=graphxml.dtd -S src/xbt/graphxml.l -L src/xbt/graphxml.dtd
+       COMMAND ${SED_EXE} -i ${string14} src/xbt/graphxml.l
        COMMAND ${CMAKE_COMMAND} -E echo "src/xbt/graphxml.l"
        #${CMAKE_HOME_DIRECTORY}/src/simdag/dax_dtd.l: ${CMAKE_HOME_DIRECTORY}/src/simdag/dax.dtd
-       COMMAND ${FLEXML_EXE} -b 1000000 --root-tags adag -P dax_ --sysid=dax.dtd -S ${CMAKE_HOME_DIRECTORY}/src/simdag/dax_dtd.l -L ${CMAKE_HOME_DIRECTORY}/src/simdag/dax.dtd
+       COMMAND ${FLEXML_EXE} -b 1000000 --root-tags adag -P dax_ --sysid=dax.dtd -S src/simdag/dax_dtd.l -L src/simdag/dax.dtd
        COMMAND ${SED_EXE} -i ${string5} src/simdag/dax_dtd.l
+       COMMAND ${SED_EXE} -i ${string14} src/simdag/dax_dtd.l
        COMMAND ${CMAKE_COMMAND} -E echo "src/simdag/dax_dtd.l"
        
        #${CMAKE_HOME_DIRECTORY}/include/surf/simgrid_dtd.h: ${CMAKE_HOME_DIRECTORY}/src/surf/simgrid.dtd
@@ -72,18 +76,21 @@ ADD_CUSTOM_COMMAND(
        COMMAND ${FLEXML_EXE} --root-tags platform -P surfxml --sysid=http://simgrid.gforge.inria.fr/simgrid.dtd -H include/surf/simgrid_dtd.h -L src/surf/simgrid.dtd
        COMMAND ${SED_EXE} -i ${string1} include/surf/simgrid_dtd.h
        COMMAND ${SED_EXE} -i ${string2} include/surf/simgrid_dtd.h     
+       COMMAND ${SED_EXE} -i ${string14} include/surf/simgrid_dtd.h
        COMMAND ${CMAKE_COMMAND} -E echo "include/surf/simgrid_dtd.h"
        #${CMAKE_HOME_DIRECTORY}/include/xbt/graphxml.h: ${CMAKE_HOME_DIRECTORY}/src/xbt/graphxml.dtd
        COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_HOME_DIRECTORY}/include/xbt/graphxml.h
        COMMAND ${FLEXML_EXE} -P graphxml --sysid=graphxml.dtd -H include/xbt/graphxml.h -L src/xbt/graphxml.dtd
        COMMAND ${SED_EXE} -i ${string3} include/xbt/graphxml.h 
        COMMAND ${SED_EXE} -i ${string4} include/xbt/graphxml.h
+       COMMAND ${SED_EXE} -i ${string14} include/xbt/graphxml.h
        COMMAND ${CMAKE_COMMAND} -E echo "include/xbt/graphxml.h"
        #${CMAKE_HOME_DIRECTORY}/src/simdag/dax_dtd.h: ${CMAKE_HOME_DIRECTORY}/src/simdag/dax.dtd
        COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_HOME_DIRECTORY}/src/simdag/dax_dtd.h
        COMMAND ${FLEXML_EXE} --root-tags adag -P dax_ --sysid=dax.dtd -H src/simdag/dax_dtd.h -L src/simdag/dax.dtd
        COMMAND ${SED_EXE} -i ${string6} src/simdag/dax_dtd.h   
        COMMAND ${SED_EXE} -i ${string7} src/simdag/dax_dtd.h
+       COMMAND ${SED_EXE} -i ${string14} src/simdag/dax_dtd.h
        COMMAND ${FLEX_EXE} -o src/gras/DataDesc/ddt_parse.yy.c -Pgras_ddt_parse_ --noline src/gras/DataDesc/ddt_parse.yy.l
        COMMAND ${CMAKE_COMMAND} -E echo "src/simdag/dax_dtd.h"
        
index f1452ca..0c24cd0 100644 (file)
@@ -533,9 +533,6 @@ ADD_TEST(memcheck-tracing-ms-3 rm -rf tracing/ms.trace tracing/ms.cat.plist trac
 ADD_TEST(memcheck-tracing-categories-0 ${CMAKE_BINARY_DIR}/examples/msg/tracing/categories --cfg=tracing:1 --cfg=tracing/filename:tracing/categories.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=triva/categorized:tracing/categories.cat.plist --cfg=triva/uncategorized:tracing/categories.uncat.plist /tracing/platform.xml /tracing/deployment.xml --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
 ADD_TEST(memcheck-tracing-categories-1 cat tracing/categories.trace --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
 ADD_TEST(memcheck-tracing-categories-2 rm -rf tracing/categories.trace tracing/categories.cat.plist tracing/categories.uncat.plist --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
-ADD_TEST(memcheck-tracing-volume-0 ${CMAKE_BINARY_DIR}/examples/msg/tracing/volume --cfg=tracing:1 --cfg=tracing/filename:tracing/volume.trace --cfg=tracing/msg/volume:1 /tracing/platform.xml /tracing/deployment.xml --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
-ADD_TEST(memcheck-tracing-volume-1 cat tracing/volume.trace --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
-ADD_TEST(memcheck-tracing-volume-2 rm -rf tracing/volume.trace --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
 ADD_TEST(memcheck-tracing-tasks-0 ${CMAKE_BINARY_DIR}/examples/msg/tracing/tasks --cfg=tracing:1 --cfg=tracing/msg/task:1 --cfg=tracing/filename:tracing/tasks.trace /tracing/platform.xml /tracing/deployment.xml --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
 ADD_TEST(memcheck-tracing-tasks-1 cat tracing/tasks.trace --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
 ADD_TEST(memcheck-tracing-tasks-2 rm -rf tracing/tasks.trace --cd /home/navarrop/simgrid/simgrid/trunk/examples/msg/)
old mode 100644 (file)
new mode 100755 (executable)
index dd73b3f..37b8f99 100644 (file)
@@ -1623,7 +1623,13 @@ that are created during the simulation (for example, tasks from server1,
 server2, or request tasks, computation tasks, communication tasks).
 All resource utilization (host power and link bandwidth) will be
 classified according to the task category. Tasks that do not belong to a
-category are not traced.
+category are not traced. The color for the category that is being declared
+is random (use next function to specify a color).
+
+\li <b>\c TRACE_category_with_color (const char *category, const char *color)</b>: Same
+as TRACE_category, but let user specify a color encoded as a RGB-like string with
+three floats from 0 to 1. So, to specify a red color, the user can pass "1 0 0" as
+color parameter. A light-gray color can be specified using "0.7 0.7 0.7" as color.
 
 \li <b>\c TRACE_msg_set_task_category (m_task_t task, const char *category)</b>:
 This function should be called after the creation of a MSG task, to define the
@@ -1639,17 +1645,32 @@ created with the function \c MSG_task_create. The second parameter
 \c category must contain a category that was previously defined by the function
 \c TRACE_category.
 
-\li <b>\c TRACE_host_variable_declare (const char *variable)</b>:
-Declare a user variable that will be associated to hosts. A variable can
+\li <b>\c TRACE_[host|link]_variable_declare (const char *variable)</b>:
+Declare a user variable that will be associated to host/link. A variable can
 be used to trace user variables such as the number of tasks in a server,
-the number of clients in an application, and so on.
-
-\li <b>\c TRACE_host_variable_[set|add|sub] (const char *variable, double
-value)</b>:
-Set the value of a given user variable. It is important to remind that
-the value of this variable is always associated to the host. The host
-that will be used when these functions are called is the one returned by
-the function \c MSG_host_self().
+the number of clients in an application (for hosts), and so on.
+
+\li <b>\c TRACE_[host|link]_variable_[set|add|sub] (const char *[host|link], const char *variable, double value)</b>:
+Set the value of a given user variable for a given host/link. The value
+of this variable is always associated to the host/link. The host/link 
+parameters should be its name as the one listed in the platform file.
+
+\li <b>\c TRACE_[host|link]_variable_[set|add|sub]_with_time (double time, const char *[host|link], const char *variable, double value)</b>:
+Same as TRACE_[host|link]_variable_[set|add|sub], but let user specify
+the time used to trace it. Users can specify a time that is not the 
+simulated clock time as defined by the core simulator. This allows
+a fine-grain control of time definition, but should be used with 
+caution since the trace can be inconsistent if resource utilization
+traces are also traced.
+
+\li <b>\c TRACE_link_srcdst_variable_[set|add|sub] (const char *src, const char *dst, const char *variable, double value)</b>:
+Same as TRACE_link_variable_[set|add|sub], but now users specify a source and
+destination hosts (as the names from the platform file). The tracing library
+will get the corresponding route that connects those two hosts (src and dst) and
+[set|add|sub] the value's variable for all the links of the route.
+
+\li <b>\c TRACE_link_srcdst_variable_[set|add|sub]_with_time (double time, const char *src, const char *dst, const char *variable, double value)</b>: 
+Same as TRACE_link_srcdst_variable_[set|add|sub], but user specify a time different from the simulated time.
 
 \subsubsection faq_tracing_options Tracing configuration Options
 
@@ -1658,8 +1679,21 @@ These are the options accepted by the tracing system of SimGrid:
 \li <b>\c 
 tracing
 </b>:
-  It activates the tracing system and register the simulation platform
-  in the trace file. You have to enable this option to others take effect.
+  Safe switch. It activates (or deactivates) the tracing system.
+  No other tracing options take effect if this one is not activated.
+
+\li <b>\c
+tracing/platform
+</b>:
+  Register the simulation platform in the trace file.
+
+\li <b>\c
+tracing/onelink_only
+</b>:
+  By default, the tracing system uses all routes in the platform file
+  to re-create a "graph" of the platform and register it in the trace file.
+  This option let the user tell the tracing system to use only the routes
+  that are composed with just one link.
 
 \li <b>\c 
 tracing/categorized
@@ -1674,20 +1708,6 @@ tracing/uncategorized
   this simulator do not use tracing categories and resource use have to be
   traced.
 
-\li <b>\c 
-tracing/platform/method
-</b>:
-  It changes the way resource utilization (categorized or not) is traced
-  inside the simulation core. Method 'a' (default) traces all updates defined
-  by the CPU/network model of a given resource. Depending on the interface used
-  by this simulator (MSG, SMPI, SimDAG), the default method can generate large
-  trace files. Method 'b' tries to make smaller tracefiles using clever updates,
-  without losing details of resource utilization. Method 'c' generates even
-  smaller files by doing time integration during the simulation, but it loses
-  precision. If this last method is used, the smallest timeslice used in the
-  tracefile analysis must be bigger than the smaller resource utilization. If
-  unsure, do not change this option.
-
 \li <b>\c 
 tracing/filename
 </b>:
@@ -1724,11 +1744,18 @@ tracing/msg/process
   behavior of all categorized MSG processes, grouping them by hosts. This option
   can be used to track process location if this simulator has process migration.
 
+
+\li <b>\c 
+triva/categorized:graph_categorized.plist
+</b>:
+  This option generates a graph configuration file for Triva considering
+  categorized resource utilization.
+
 \li <b>\c 
-tracing/msg/volume
+triva/uncategorized:graph_uncategorized.plist
 </b>:
-  This experimental option only has effect if this simulator is MSG-based.
-  It traces the communication volume of MSG send/receive.
+  This option generates a graph configuration file for Triva considering
+  uncategorized resource utilization.
 
 \subsubsection faq_tracing_example Example of Instrumentation
 
@@ -1739,13 +1766,13 @@ int main (int argc, char **argv)
 {
   MSG_global_init (&argc, &argv);
 
-  //note that TRACE_start must be called after MSG_global_init
+  //(... after deployment ...)
+
+  //note that category declaration must be called after MSG_create_environment
   TRACE_category_with_color ("request", "1 0 0");
   TRACE_category_with_color ("computation", "0.3 1 0.4");
   TRACE_category ("finalize");
 
-  //(... after deployment ...)
-
   m_task_t req1 = MSG_task_create("1st_request_task", 10, 10, NULL);
   m_task_t req2 = MSG_task_create("2nd_request_task", 10, 10, NULL);
   m_task_t req3 = MSG_task_create("3rd_request_task", 10, 10, NULL);
index 83a4b19..6ad0665 100644 (file)
@@ -5,14 +5,12 @@ set(LIBRARY_OUTPUT_PATH "${CMAKE_HOME_DIRECTORY}/lib")
 
 add_executable(ms         ${CMAKE_CURRENT_SOURCE_DIR}/ms.c)
 add_executable(categories ${CMAKE_CURRENT_SOURCE_DIR}/categories.c)
-add_executable(volume     ${CMAKE_CURRENT_SOURCE_DIR}/volume.c)
 add_executable(tasks      ${CMAKE_CURRENT_SOURCE_DIR}/tasks.c)
 add_executable(procmig    ${CMAKE_CURRENT_SOURCE_DIR}/procmig.c)
 
 ### Add definitions for compile
 target_link_libraries(ms simgrid m )
 target_link_libraries(categories simgrid m )
-target_link_libraries(volume simgrid m )
 target_link_libraries(tasks simgrid m )
 target_link_libraries(procmig simgrid m )
 
index a22466b..abcd93b 100644 (file)
@@ -124,226 +124,198 @@ $ cat tracing/procmig.trace
 > %EndEventDef
 > 0 1 0 HOST
 > 6 0 1 1 0 Tremblay
-> 1 2 1 power "1 1 1"
-> 0 3 1 MSG_PROCESS
-> 2 4 3 MSG_PROCESS_STATE
-> 5 5 4 executing "0 1 0"
-> 5 6 4 suspend "1 0 1"
-> 5 7 4 sleep "1 1 0"
-> 5 8 4 receive "1 0 0"
-> 5 9 4 send "0 0 1"
-> 5 10 4 task_execute "0 1 1"
-> 4 11 0 3 3 MSG_PROCESS_LINK
-> 4 12 0 3 3 MSG_PROCESS_TASK_LINK
+> 0 2 1 MSG_PROCESS
+> 2 3 2 MSG_PROCESS_STATE
+> 5 4 3 executing "0 1 0"
+> 5 5 3 suspend "1 0 1"
+> 5 6 3 sleep "1 1 0"
+> 5 7 3 receive "1 0 0"
+> 5 8 3 send "0 0 1"
+> 5 9 3 task_execute "0 1 1"
+> 4 10 0 2 2 MSG_PROCESS_LINK
+> 4 11 0 2 2 MSG_PROCESS_TASK_LINK
 > 6 0 2 1 0 Jupiter
 > 6 0 3 1 0 Fafard
 > 6 0 4 1 0 Ginette
 > 6 0 5 1 0 Bourassa
-> 0 13 0 LINK
-> 6 0 6 13 0 6
-> 1 14 13 bandwidth "1 1 1"
-> 1 15 13 latency "1 1 1"
-> 6 0 7 13 0 3
-> 6 0 8 13 0 7
-> 6 0 9 13 0 9
-> 6 0 10 13 0 2
-> 6 0 11 13 0 8
-> 6 0 12 13 0 1
-> 6 0 13 13 0 4
-> 6 0 14 13 0 0
-> 6 0 15 13 0 5
-> 4 16 0 1 13 HOST-LINK
-> 4 17 0 13 13 LINK-LINK
-> 4 18 0 13 1 LINK-HOST
-> 8 0 2 1 98095000.000000
-> 8 0 2 2 76296000.000000
-> 8 0 2 3 76296000.000000
-> 8 0 2 4 48492000.000000
-> 8 0 2 5 48492000.000000
-> 8 0 14 6 41279125.000000
-> 8 0 15 6 0.000060
-> 8 0 14 7 34285625.000000
-> 8 0 15 7 0.000514
-> 8 0 14 8 11618875.000000
-> 8 0 15 8 0.000190
-> 8 0 14 9 7209750.000000
-> 8 0 15 9 0.001462
-> 8 0 14 10 118682500.000000
-> 8 0 15 10 0.000137
-> 8 0 14 11 8158000.000000
-> 8 0 15 11 0.000271
-> 8 0 14 12 34285625.000000
-> 8 0 15 12 0.000514
-> 8 0 14 13 10099625.000000
-> 8 0 15 13 0.000480
-> 8 0 14 14 41279125.000000
-> 8 0 15 14 0.000060
-> 8 0 14 15 27946250.000000
-> 8 0 15 15 0.000278
-> 14 0 16 0 G 3 0
-> 15 0 16 0 G 11 0
-> 14 0 17 0 G 11 1
-> 15 0 17 0 G 12 1
-> 14 0 17 0 G 12 2
-> 15 0 17 0 G 14 2
-> 14 0 17 0 G 14 3
-> 15 0 17 0 G 10 3
-> 14 0 17 0 G 10 4
-> 15 0 17 0 G 7 4
-> 14 0 17 0 G 7 5
-> 15 0 17 0 G 13 5
-> 14 0 18 0 G 13 6
-> 15 0 18 0 G 1 6
-> 14 0 17 0 G 11 7
-> 15 0 17 0 G 6 7
-> 14 0 17 0 G 6 8
-> 15 0 17 0 G 8 8
-> 14 0 18 0 G 8 9
-> 15 0 18 0 G 5 9
-> 14 0 17 0 G 13 10
-> 15 0 17 0 G 9 10
-> 14 0 18 0 G 9 11
-> 15 0 18 0 G 2 11
-> 14 0 17 0 G 10 12
-> 15 0 17 0 G 15 12
-> 14 0 18 0 G 15 13
-> 15 0 18 0 G 4 13
-> 14 0 17 0 G 12 14
-> 15 0 17 0 G 6 14
-> 14 0 16 0 G 1 15
-> 15 0 16 0 G 9 15
-> 14 0 17 0 G 7 16
-> 15 0 17 0 G 15 16
-> 6 0 16 3 3 emigrant-1
-> 6 0 17 3 1 master-2
-> 11 0 4 16 5
-> 11 0 4 17 5
-> 12 0 4 16 7
-> 12 0 4 17 9
-> 14 0 12 0 SR 17 p0
-> 13 2.000000 4 16
-> 12 2.000000 4 16 8
-> 13 2.020551 4 17
-> 12 2.020551 4 17 9
-> 14 2.020551 12 0 SR 17 p1
-> 13 2.020551 4 16
-> 15 2.020551 12 0 SR 16 p0
-> 14 2.020551 11 0 M 16 0
-> 7 2.020551 3 16
-> 6 2.020551 18 3 1 emigrant-1
-> 11 2.020551 4 18 5
-> 15 2.020551 11 0 M 18 0
-> 12 2.020551 4 18 7
-> 13 4.020551 4 18
-> 12 4.020551 4 18 8
-> 13 4.020707 4 17
-> 12 4.020707 4 17 9
-> 14 4.020707 12 0 SR 17 p2
-> 13 4.020707 4 18
-> 15 4.020707 12 0 SR 18 p1
-> 14 4.020707 11 0 M 18 1
-> 7 4.020707 3 18
-> 6 4.020707 19 3 2 emigrant-1
-> 11 4.020707 4 19 5
-> 15 4.020707 11 0 M 19 1
-> 12 4.020707 4 19 7
-> 13 6.020707 4 19
-> 12 6.020707 4 19 8
-> 13 6.035906 4 17
-> 12 6.035906 4 17 9
-> 14 6.035906 12 0 SR 17 p3
-> 13 6.035906 4 19
-> 15 6.035906 12 0 SR 19 p2
-> 14 6.035906 11 0 M 19 2
-> 7 6.035906 3 19
-> 6 6.035906 20 3 3 emigrant-1
-> 11 6.035906 4 20 5
-> 15 6.035906 11 0 M 20 2
-> 12 6.035906 4 20 7
-> 13 8.035906 4 20
-> 12 8.035906 4 20 8
-> 13 8.056457 4 17
-> 12 8.056457 4 17 9
-> 14 8.056457 12 0 SR 17 p4
-> 13 8.056457 4 20
-> 15 8.056457 12 0 SR 20 p3
-> 14 8.056457 11 0 M 20 3
-> 7 8.056457 3 20
-> 6 8.056457 21 3 4 emigrant-1
-> 11 8.056457 4 21 5
-> 15 8.056457 11 0 M 21 3
-> 12 8.056457 4 21 7
-> 13 10.056457 4 21
-> 12 10.056457 4 21 8
-> 13 10.069689 4 17
-> 12 10.069689 4 17 9
-> 14 10.069689 12 0 SR 17 p5
-> 13 10.069689 4 21
-> 15 10.069689 12 0 SR 21 p4
-> 14 10.069689 11 0 M 21 4
-> 7 10.069689 3 21
-> 6 10.069689 22 3 5 emigrant-1
-> 11 10.069689 4 22 5
-> 15 10.069689 11 0 M 22 4
-> 12 10.069689 4 22 7
-> 13 12.069689 4 22
-> 12 12.069689 4 22 8
-> 13 12.090025 4 17
-> 12 12.090025 4 17 9
-> 14 12.090025 12 0 SR 17 p6
-> 13 12.090025 4 22
-> 15 12.090025 12 0 SR 22 p5
-> 14 12.090025 11 0 M 22 5
-> 7 12.090025 3 22
-> 6 12.090025 23 3 3 emigrant-1
-> 11 12.090025 4 23 5
-> 15 12.090025 11 0 M 23 5
-> 12 12.090025 4 23 7
-> 13 14.090025 4 23
-> 12 14.090025 4 23 8
-> 13 14.110575 4 17
-> 12 14.110575 4 17 9
-> 14 14.110575 12 0 SR 17 p7
-> 13 14.110575 4 23
-> 15 14.110575 12 0 SR 23 p6
-> 14 14.110575 11 0 M 23 6
-> 7 14.110575 3 23
-> 6 14.110575 24 3 1 emigrant-1
-> 11 14.110575 4 24 5
-> 15 14.110575 11 0 M 24 6
-> 12 14.110575 4 24 7
-> 13 16.110575 4 24
-> 12 16.110575 4 24 8
-> 13 16.110731 4 17
-> 12 16.110731 4 17 9
-> 14 16.110731 12 0 SR 17 p8
-> 13 16.110731 4 24
-> 15 16.110731 12 0 SR 24 p7
-> 14 16.110731 11 0 M 24 7
-> 7 16.110731 3 24
-> 6 16.110731 25 3 4 emigrant-1
-> 11 16.110731 4 25 5
-> 15 16.110731 11 0 M 25 7
-> 12 16.110731 4 25 7
-> 13 18.110731 4 25
-> 12 18.110731 4 25 8
-> 13 18.123963 4 17
-> 7 18.123963 3 17
-> 13 18.123963 4 25
-> 15 18.123963 12 0 SR 25 p8
-> 7 18.123963 3 25
+> 0 12 0 LINK
+> 6 0 6 12 0 6
+> 6 0 7 12 0 3
+> 6 0 8 12 0 7
+> 6 0 9 12 0 9
+> 6 0 10 12 0 2
+> 6 0 11 12 0 8
+> 6 0 12 12 0 1
+> 6 0 13 12 0 4
+> 6 0 14 12 0 0
+> 6 0 15 12 0 5
+> 4 13 0 1 12 HOST-LINK
+> 4 14 0 12 12 LINK-LINK
+> 4 15 0 12 1 LINK-HOST
+> 14 0 13 0 G 3 0
+> 15 0 13 0 G 11 0
+> 14 0 14 0 G 11 1
+> 15 0 14 0 G 12 1
+> 14 0 14 0 G 12 2
+> 15 0 14 0 G 14 2
+> 14 0 14 0 G 14 3
+> 15 0 14 0 G 10 3
+> 14 0 14 0 G 10 4
+> 15 0 14 0 G 7 4
+> 14 0 14 0 G 7 5
+> 15 0 14 0 G 13 5
+> 14 0 15 0 G 13 6
+> 15 0 15 0 G 1 6
+> 14 0 14 0 G 11 7
+> 15 0 14 0 G 6 7
+> 14 0 14 0 G 6 8
+> 15 0 14 0 G 8 8
+> 14 0 15 0 G 8 9
+> 15 0 15 0 G 5 9
+> 14 0 14 0 G 13 10
+> 15 0 14 0 G 9 10
+> 14 0 15 0 G 9 11
+> 15 0 15 0 G 2 11
+> 14 0 14 0 G 10 12
+> 15 0 14 0 G 15 12
+> 14 0 15 0 G 15 13
+> 15 0 15 0 G 4 13
+> 14 0 14 0 G 12 14
+> 15 0 14 0 G 6 14
+> 14 0 13 0 G 1 15
+> 15 0 13 0 G 9 15
+> 14 0 14 0 G 7 16
+> 15 0 14 0 G 15 16
+> 6 0 16 2 3 emigrant-1
+> 6 0 17 2 1 master-2
+> 11 0 3 16 4
+> 11 0 3 17 4
+> 12 0 3 16 6
+> 12 0 3 17 8
+> 14 0 11 0 SR 17 p0
+> 13 2.000000 3 16
+> 12 2.000000 3 16 7
+> 13 2.020551 3 17
+> 12 2.020551 3 17 8
+> 14 2.020551 11 0 SR 17 p1
+> 13 2.020551 3 16
+> 15 2.020551 11 0 SR 16 p0
+> 14 2.020551 10 0 M 16 0
+> 7 2.020551 2 16
+> 6 2.020551 18 2 1 emigrant-1
+> 11 2.020551 3 18 4
+> 15 2.020551 10 0 M 18 0
+> 12 2.020551 3 18 6
+> 13 4.020551 3 18
+> 12 4.020551 3 18 7
+> 13 4.020707 3 17
+> 12 4.020707 3 17 8
+> 14 4.020707 11 0 SR 17 p2
+> 13 4.020707 3 18
+> 15 4.020707 11 0 SR 18 p1
+> 14 4.020707 10 0 M 18 1
+> 7 4.020707 2 18
+> 6 4.020707 19 2 2 emigrant-1
+> 11 4.020707 3 19 4
+> 15 4.020707 10 0 M 19 1
+> 12 4.020707 3 19 6
+> 13 6.020707 3 19
+> 12 6.020707 3 19 7
+> 13 6.035906 3 17
+> 12 6.035906 3 17 8
+> 14 6.035906 11 0 SR 17 p3
+> 13 6.035906 3 19
+> 15 6.035906 11 0 SR 19 p2
+> 14 6.035906 10 0 M 19 2
+> 7 6.035906 2 19
+> 6 6.035906 20 2 3 emigrant-1
+> 11 6.035906 3 20 4
+> 15 6.035906 10 0 M 20 2
+> 12 6.035906 3 20 6
+> 13 8.035906 3 20
+> 12 8.035906 3 20 7
+> 13 8.056457 3 17
+> 12 8.056457 3 17 8
+> 14 8.056457 11 0 SR 17 p4
+> 13 8.056457 3 20
+> 15 8.056457 11 0 SR 20 p3
+> 14 8.056457 10 0 M 20 3
+> 7 8.056457 2 20
+> 6 8.056457 21 2 4 emigrant-1
+> 11 8.056457 3 21 4
+> 15 8.056457 10 0 M 21 3
+> 12 8.056457 3 21 6
+> 13 10.056457 3 21
+> 12 10.056457 3 21 7
+> 13 10.069689 3 17
+> 12 10.069689 3 17 8
+> 14 10.069689 11 0 SR 17 p5
+> 13 10.069689 3 21
+> 15 10.069689 11 0 SR 21 p4
+> 14 10.069689 10 0 M 21 4
+> 7 10.069689 2 21
+> 6 10.069689 22 2 5 emigrant-1
+> 11 10.069689 3 22 4
+> 15 10.069689 10 0 M 22 4
+> 12 10.069689 3 22 6
+> 13 12.069689 3 22
+> 12 12.069689 3 22 7
+> 13 12.090025 3 17
+> 12 12.090025 3 17 8
+> 14 12.090025 11 0 SR 17 p6
+> 13 12.090025 3 22
+> 15 12.090025 11 0 SR 22 p5
+> 14 12.090025 10 0 M 22 5
+> 7 12.090025 2 22
+> 6 12.090025 23 2 3 emigrant-1
+> 11 12.090025 3 23 4
+> 15 12.090025 10 0 M 23 5
+> 12 12.090025 3 23 6
+> 13 14.090025 3 23
+> 12 14.090025 3 23 7
+> 13 14.110575 3 17
+> 12 14.110575 3 17 8
+> 14 14.110575 11 0 SR 17 p7
+> 13 14.110575 3 23
+> 15 14.110575 11 0 SR 23 p6
+> 14 14.110575 10 0 M 23 6
+> 7 14.110575 2 23
+> 6 14.110575 24 2 1 emigrant-1
+> 11 14.110575 3 24 4
+> 15 14.110575 10 0 M 24 6
+> 12 14.110575 3 24 6
+> 13 16.110575 3 24
+> 12 16.110575 3 24 7
+> 13 16.110731 3 17
+> 12 16.110731 3 17 8
+> 14 16.110731 11 0 SR 17 p8
+> 13 16.110731 3 24
+> 15 16.110731 11 0 SR 24 p7
+> 14 16.110731 10 0 M 24 7
+> 7 16.110731 2 24
+> 6 16.110731 25 2 4 emigrant-1
+> 11 16.110731 3 25 4
+> 15 16.110731 10 0 M 25 7
+> 12 16.110731 3 25 6
+> 13 18.110731 3 25
+> 12 18.110731 3 25 7
+> 13 18.123963 3 17
+> 7 18.123963 2 17
+> 13 18.123963 3 25
+> 15 18.123963 11 0 SR 25 p8
+> 7 18.123963 2 25
 > 7 18.123963 1 3
 > 7 18.123963 1 1
-> 7 18.123963 13 14
-> 7 18.123963 13 12
-> 7 18.123963 13 10
-> 7 18.123963 13 7
-> 7 18.123963 13 13
-> 7 18.123963 13 15
-> 7 18.123963 13 6
-> 7 18.123963 13 8
-> 7 18.123963 13 11
-> 7 18.123963 13 9
+> 7 18.123963 12 14
+> 7 18.123963 12 12
+> 7 18.123963 12 10
+> 7 18.123963 12 7
+> 7 18.123963 12 13
+> 7 18.123963 12 15
+> 7 18.123963 12 6
+> 7 18.123963 12 8
+> 7 18.123963 12 11
+> 7 18.123963 12 9
 > 7 18.123963 1 5
 > 7 18.123963 1 2
 > 7 18.123963 1 4
index baaac6e..bb1633e 100644 (file)
@@ -2,8 +2,9 @@
 
 p Tracing tasks
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/tasks$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/msg/task:1 --cfg=tracing/filename:tracing/tasks.trace ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/tasks$EXEEXT --cfg=tracing:1 --cfg=tracing/categorized:1 --cfg=tracing/buffer:1 --cfg=tracing/msg/task:1 --cfg=tracing/filename:tracing/tasks.trace ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/task' to '1'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/tasks.trace'
@@ -242,100 +243,171 @@ $ cat tracing/tasks.trace
 > 15 0 11 0 G 9 15
 > 14 0 12 0 G 7 16
 > 15 0 12 0 G 15 16
+> 1 14 8 bcompute "1 0 0"
+> 1 15 1 pcompute "1 0 0"
+> 1 16 8 bfinalize "0 1 0"
+> 1 17 1 pfinalize "0 1 0"
 > 6 0 16 3 1 task-0
-> 1 14 3 compute "1 1 1"
-> 8 0 14 16 1.000000
+> 1 18 3 compute "1 1 1"
+> 8 0 18 16 1.000000
 > 12 0 4 16 6
 > 13 0 4 16
 > 14 0 7 0 SR 16 0
 > 7 0 3 16
 > 6 0.002164 17 3 1 task-0
 > 6 0.002164 18 3 1 task-1
-> 8 0.002164 14 17 1.000000
+> 8 0.002164 18 17 1.000000
 > 12 0.002164 4 17 6
 > 15 0.002164 7 0 SR 17 0
 > 12 0.002164 4 17 5
-> 8 0.002164 14 18 1.000000
+> 8 0.002164 18 18 1.000000
 > 12 0.002164 4 18 6
 > 13 0.002164 4 18
 > 14 0.002164 7 0 SR 18 1
 > 7 0.002164 3 18
 > 6 0.168126 19 3 2 task-1
 > 6 0.168126 20 3 1 task-2
-> 8 0.168126 14 19 1.000000
+> 8 0.017364 14 9 0.000000
+> 9 0.017364 14 9 6632970.000000
+> 10 0.168126 14 9 6632970.000000
+> 8 0.168126 18 19 1.000000
 > 12 0.168126 4 19 6
 > 15 0.168126 7 0 SR 19 1
 > 12 0.168126 4 19 5
-> 8 0.168126 14 20 1.000000
+> 8 0.168126 18 20 1.000000
 > 12 0.168126 4 20 6
 > 13 0.168126 4 20
 > 14 0.168126 7 0 SR 20 2
 > 7 0.168126 3 20
+> 8 0.002164 15 1 0.000000
+> 9 0.002164 15 1 98095000.000000
+> 10 0.168126 15 1 98095000.000000
 > 6 0.386279 21 3 3 task-2
 > 6 0.386279 22 3 1 task-3
-> 8 0.386279 14 21 1.000000
+> 8 0.188676 14 13 0.000000
+> 9 0.188676 14 13 5060664.718311
+> 8 0.188676 14 7 0.000000
+> 9 0.188676 14 7 5060664.718311
+> 8 0.188676 14 10 0.000000
+> 9 0.188676 14 10 5060664.718311
+> 8 0.188676 14 14 0.000000
+> 9 0.188676 14 14 5060664.718311
+> 8 0.188676 14 12 0.000000
+> 9 0.188676 14 12 5060664.718311
+> 8 0.188676 14 11 0.000000
+> 9 0.188676 14 11 5060664.718311
+> 10 0.386279 14 13 5060664.718311
+> 10 0.386279 14 7 5060664.718311
+> 10 0.386279 14 10 5060664.718311
+> 10 0.386279 14 14 5060664.718311
+> 10 0.386279 14 12 5060664.718311
+> 10 0.386279 14 11 5060664.718311
+> 8 0.386279 18 21 1.000000
 > 12 0.386279 4 21 6
 > 15 0.386279 7 0 SR 21 2
 > 12 0.386279 4 21 5
-> 8 0.386279 14 22 1.000000
+> 8 0.386279 18 22 1.000000
 > 12 0.386279 4 22 6
 > 13 0.386279 4 22
 > 14 0.386279 7 0 SR 22 3
 > 7 0.386279 3 22
+> 9 0.168126 15 1 98095000.000000
+> 10 0.386279 15 1 98095000.000000
+> 9 0.386279 15 1 98095000.000000
+> 9 0.399511 14 13 7859911.230163
+> 9 0.399511 14 7 7859911.230163
+> 8 0.399511 14 15 0.000000
+> 9 0.399511 14 15 7859911.230163
+> 10 0.511874 15 1 98095000.000000
+> 10 0.511874 14 13 7859911.230163
+> 10 0.511874 14 7 7859911.230163
+> 10 0.511874 14 15 7859911.230163
 > 13 0.511874 4 17
 > 7 0.511874 3 17
+> 9 0.511874 14 13 7859911.230163
+> 9 0.511874 14 7 7859911.230163
+> 9 0.511874 14 15 7859911.230163
 > 6 0.526739 23 3 4 task-3
 > 6 0.526739 24 3 1 task-4
-> 8 0.526739 14 23 1.000000
+> 10 0.526739 14 13 7859911.230163
+> 10 0.526739 14 7 7859911.230163
+> 10 0.526739 14 15 7859911.230163
+> 8 0.526739 18 23 1.000000
 > 12 0.526739 4 23 6
 > 15 0.526739 7 0 SR 23 3
 > 12 0.526739 4 23 5
-> 8 0.526739 14 24 1.000000
+> 8 0.526739 18 24 1.000000
 > 12 0.526739 4 24 6
 > 13 0.526739 4 24
 > 14 0.526739 7 0 SR 24 4
 > 7 0.526739 3 24
 > 6 0.742611 25 3 5 task-4
 > 6 0.742611 26 3 1 task-5
-> 8 0.742611 14 25 1.000000
+> 9 0.547074 14 13 5114134.701194
+> 9 0.547074 14 7 5114134.701194
+> 9 0.547074 14 10 5114134.701194
+> 9 0.547074 14 14 5114134.701194
+> 9 0.547074 14 12 5114134.701194
+> 8 0.547074 14 6 0.000000
+> 9 0.547074 14 6 5114134.701194
+> 8 0.547074 14 8 0.000000
+> 9 0.547074 14 8 5114134.701194
+> 10 0.742611 14 13 5114134.701194
+> 10 0.742611 14 7 5114134.701194
+> 10 0.742611 14 10 5114134.701194
+> 10 0.742611 14 14 5114134.701194
+> 10 0.742611 14 12 5114134.701194
+> 10 0.742611 14 6 5114134.701194
+> 10 0.742611 14 8 5114134.701194
+> 8 0.742611 18 25 1.000000
 > 12 0.742611 4 25 6
 > 15 0.742611 7 0 SR 25 4
 > 12 0.742611 4 25 5
-> 8 0.742611 14 26 1.000000
+> 8 0.742611 18 26 1.000000
 > 12 0.742611 4 26 6
 > 13 0.742611 4 26
 > 14 0.742611 7 0 SR 26 5
 > 7 0.742611 3 26
 > 6 0.744775 27 3 1 task-5
 > 6 0.744775 28 3 1 task-6
-> 8 0.744775 14 27 1.000000
+> 8 0.744775 18 27 1.000000
 > 12 0.744775 4 27 6
 > 15 0.744775 7 0 SR 27 5
 > 12 0.744775 4 27 5
-> 8 0.744775 14 28 1.000000
+> 8 0.744775 18 28 1.000000
 > 12 0.744775 4 28 6
 > 13 0.744775 4 28
 > 14 0.744775 7 0 SR 28 6
 > 7 0.744775 3 28
+> 8 0.168126 15 2 0.000000
+> 9 0.168126 15 2 76296000.000000
+> 10 0.823468 15 2 76296000.000000
 > 13 0.823468 4 19
 > 7 0.823468 3 19
 > 6 0.989430 29 3 1 task-7
-> 8 0.989430 14 29 1.000000
+> 8 0.989430 18 29 1.000000
 > 12 0.989430 4 29 6
 > 13 0.989430 4 29
 > 14 0.989430 7 0 SR 29 7
 > 7 0.989430 3 29
 > 6 0.989430 30 3 2 task-6
-> 8 0.989430 14 30 1.000000
+> 8 0.386279 15 3 0.000000
+> 9 0.386279 15 3 76296000.000000
+> 9 0.744775 15 1 98095000.000000
+> 8 0.989430 18 30 1.000000
 > 12 0.989430 4 30 6
 > 15 0.989430 7 0 SR 30 6
 > 12 0.989430 4 30 5
+> 10 0.989430 15 1 98095000.000000
+> 10 1.041621 15 3 76296000.000000
 > 13 1.041621 4 21
 > 7 1.041621 3 21
+> 9 0.989430 15 1 98095000.000000
+> 10 1.254485 15 1 98095000.000000
 > 13 1.254485 4 27
 > 7 1.254485 3 27
 > 6 1.259775 31 3 1 task-8
-> 8 1.259775 14 31 1.000000
+> 8 1.259775 18 31 1.000000
 > 12 1.259775 4 31 6
 > 13 1.259775 4 31
 > 14 1.259775 7 0 SR 31 8
@@ -343,219 +415,341 @@ $ cat tracing/tasks.trace
 > 6 1.259775 32 3 3 task-7
 > 6 1.261939 33 3 1 task-8
 > 6 1.261939 34 3 1 task-9
-> 8 1.259775 14 32 1.000000
+> 8 1.259775 18 32 1.000000
 > 12 1.259775 4 32 6
 > 15 1.259775 7 0 SR 32 7
 > 12 1.259775 4 32 5
-> 8 1.261939 14 33 1.000000
+> 8 1.261939 18 33 1.000000
 > 12 1.261939 4 33 6
 > 15 1.261939 7 0 SR 33 8
 > 12 1.261939 4 33 5
-> 8 1.261939 14 34 1.000000
+> 8 1.261939 18 34 1.000000
 > 12 1.261939 4 34 6
 > 13 1.261939 4 34
 > 14 1.261939 7 0 SR 34 9
 > 7 1.261939 3 34
+> 8 0.526739 15 4 0.000000
+> 9 0.526739 15 4 48492000.000000
+> 10 1.557837 15 4 48492000.000000
 > 13 1.557837 4 23
 > 7 1.557837 3 23
+> 9 0.989430 15 2 76296000.000000
+> 10 1.644772 15 2 76296000.000000
 > 13 1.644772 4 30
 > 7 1.644772 3 30
 > 6 1.698296 35 3 1 task-10
-> 8 1.698296 14 35 1.000000
+> 8 1.698296 18 35 1.000000
 > 12 1.698296 4 35 6
 > 13 1.698296 4 35
 > 14 1.698296 7 0 SR 35 10
 > 7 1.698296 3 35
 > 6 1.698296 36 3 4 task-9
-> 8 1.698296 14 36 1.000000
+> 9 1.261939 15 1 98095000.000000
+> 8 1.698296 18 36 1.000000
 > 12 1.698296 4 36 6
 > 15 1.698296 7 0 SR 36 9
 > 12 1.698296 4 36 5
+> 10 1.698296 15 1 98095000.000000
+> 9 1.698296 15 1 98095000.000000
+> 9 1.713496 14 9 6632970.000000
+> 10 1.771649 15 1 98095000.000000
+> 10 1.771649 14 9 6632970.000000
 > 13 1.771649 4 33
 > 7 1.771649 3 33
+> 8 0.742611 15 5 0.000000
+> 9 0.742611 15 5 48492000.000000
+> 9 1.771649 14 9 6632970.000000
+> 10 1.773709 15 5 48492000.000000
+> 10 1.773709 14 9 6632970.000000
 > 13 1.773709 4 25
 > 7 1.773709 3 25
 > 6 1.864258 37 3 2 task-10
 > 6 1.864258 38 3 1 task-11
-> 8 1.864258 14 37 1.000000
+> 9 1.773709 14 9 6632970.000000
+> 10 1.864258 14 9 6632970.000000
+> 8 1.864258 18 37 1.000000
 > 12 1.864258 4 37 6
 > 15 1.864258 7 0 SR 37 10
 > 12 1.864258 4 37 5
-> 8 1.864258 14 38 1.000000
+> 8 1.864258 18 38 1.000000
 > 12 1.864258 4 38 6
 > 13 1.864258 4 38
 > 14 1.864258 7 0 SR 38 11
 > 7 1.864258 3 38
 > 6 1.866422 39 3 1 task-11
 > 6 1.866422 40 3 1 task-12
-> 8 1.866422 14 39 1.000000
+> 8 1.866422 18 39 1.000000
 > 12 1.866422 4 39 6
 > 15 1.866422 7 0 SR 39 11
 > 12 1.866422 4 39 5
-> 8 1.866422 14 40 1.000000
+> 8 1.866422 18 40 1.000000
 > 12 1.866422 4 40 6
 > 13 1.866422 4 40
 > 14 1.866422 7 0 SR 40 12
 > 7 1.866422 3 40
+> 9 1.259775 15 3 76296000.000000
+> 9 1.886758 14 13 5114134.701194
+> 9 1.886758 14 7 5114134.701194
+> 9 1.886758 14 10 5114134.701194
+> 9 1.886758 14 14 5114134.701194
+> 9 1.886758 14 12 5114134.701194
+> 9 1.886758 14 6 5114134.701194
+> 9 1.886758 14 8 5114134.701194
+> 10 1.915117 15 3 76296000.000000
+> 10 1.915117 14 13 5114134.701194
+> 10 1.915117 14 7 5114134.701194
+> 10 1.915117 14 10 5114134.701194
+> 10 1.915117 14 14 5114134.701194
+> 10 1.915117 14 12 5114134.701194
+> 10 1.915117 14 6 5114134.701194
+> 10 1.915117 14 8 5114134.701194
 > 13 1.915117 4 32
 > 7 1.915117 3 32
 > 6 2.082294 41 3 5 task-12
 > 6 2.082294 42 3 1 task-13
-> 8 2.082294 14 41 1.000000
+> 9 1.915117 14 13 5114134.701194
+> 9 1.915117 14 7 5114134.701194
+> 9 1.915117 14 10 5114134.701194
+> 9 1.915117 14 14 5114134.701194
+> 9 1.915117 14 12 5114134.701194
+> 9 1.915117 14 6 5114134.701194
+> 9 1.915117 14 8 5114134.701194
+> 10 2.082294 14 13 5114134.701194
+> 10 2.082294 14 7 5114134.701194
+> 10 2.082294 14 10 5114134.701194
+> 10 2.082294 14 14 5114134.701194
+> 10 2.082294 14 12 5114134.701194
+> 10 2.082294 14 6 5114134.701194
+> 10 2.082294 14 8 5114134.701194
+> 8 2.082294 18 41 1.000000
 > 12 2.082294 4 41 6
 > 15 2.082294 7 0 SR 41 12
 > 12 2.082294 4 41 5
-> 8 2.082294 14 42 1.000000
+> 8 2.082294 18 42 1.000000
 > 12 2.082294 4 42 6
 > 13 2.082294 4 42
 > 14 2.082294 7 0 SR 42 13
 > 7 2.082294 3 42
 > 6 2.300447 43 3 3 task-13
 > 6 2.300447 44 3 1 task-14
-> 8 2.300447 14 43 1.000000
+> 9 1.866422 15 1 98095000.000000
+> 10 2.082294 15 1 98095000.000000
+> 9 2.102845 14 13 5060664.718311
+> 9 2.102845 14 7 5060664.718311
+> 9 2.102845 14 10 5060664.718311
+> 9 2.102845 14 14 5060664.718311
+> 9 2.102845 14 12 5060664.718311
+> 9 2.102845 14 11 5060664.718311
+> 10 2.300447 14 13 5060664.718311
+> 10 2.300447 14 7 5060664.718311
+> 10 2.300447 14 10 5060664.718311
+> 10 2.300447 14 14 5060664.718311
+> 10 2.300447 14 12 5060664.718311
+> 10 2.300447 14 11 5060664.718311
+> 8 2.300447 18 43 1.000000
 > 12 2.300447 4 43 6
 > 15 2.300447 7 0 SR 43 13
 > 12 2.300447 4 43 5
-> 8 2.300447 14 44 1.000000
+> 8 2.300447 18 44 1.000000
 > 12 2.300447 4 44 6
 > 13 2.300447 4 44
 > 14 2.300447 7 0 SR 44 14
 > 7 2.300447 3 44
+> 9 2.082294 15 1 98095000.000000
+> 10 2.300447 15 1 98095000.000000
+> 9 2.300447 15 1 98095000.000000
+> 10 2.376132 15 1 98095000.000000
 > 13 2.376132 4 39
 > 7 2.376132 3 39
 > 6 2.378296 45 3 1 task-15
-> 8 2.378296 14 45 1.000000
+> 8 2.378296 18 45 1.000000
 > 12 2.378296 4 45 6
 > 13 2.378296 4 45
 > 14 2.378296 7 0 SR 45 15
 > 7 2.378296 3 45
 > 6 2.378296 46 3 1 task-14
-> 8 2.378296 14 46 1.000000
+> 9 1.864258 15 2 76296000.000000
+> 8 2.378296 18 46 1.000000
 > 12 2.378296 4 46 6
 > 15 2.378296 7 0 SR 46 14
 > 12 2.378296 4 46 5
+> 10 2.519600 15 2 76296000.000000
 > 13 2.519600 4 37
 > 7 2.519600 3 37
 > 6 2.685562 47 3 1 task-16
-> 8 2.685562 14 47 1.000000
+> 8 2.685562 18 47 1.000000
 > 12 2.685562 4 47 6
 > 13 2.685562 4 47
 > 14 2.685562 7 0 SR 47 16
 > 7 2.685562 3 47
 > 6 2.685562 48 3 2 task-15
-> 8 2.685562 14 48 1.000000
+> 9 1.698296 15 4 48492000.000000
+> 9 2.378296 15 1 98095000.000000
+> 8 2.685562 18 48 1.000000
 > 12 2.685562 4 48 6
 > 15 2.685562 7 0 SR 48 15
 > 12 2.685562 4 48 5
+> 10 2.685562 15 1 98095000.000000
+> 10 2.729394 15 4 48492000.000000
 > 13 2.729394 4 36
 > 7 2.729394 3 36
 > 6 2.869854 49 3 1 task-17
-> 8 2.869854 14 49 1.000000
+> 8 2.869854 18 49 1.000000
 > 12 2.869854 4 49 6
 > 13 2.869854 4 49
 > 14 2.869854 7 0 SR 49 17
 > 7 2.869854 3 49
 > 6 2.869854 50 3 4 task-16
-> 8 2.869854 14 50 1.000000
+> 9 2.685562 15 1 98095000.000000
+> 8 2.869854 18 50 1.000000
 > 12 2.869854 4 50 6
 > 15 2.869854 7 0 SR 50 16
 > 12 2.869854 4 50 5
+> 10 2.869854 15 1 98095000.000000
+> 9 2.869854 15 1 98095000.000000
+> 10 2.888006 15 1 98095000.000000
 > 13 2.888006 4 46
 > 7 2.888006 3 46
 > 6 2.890170 51 3 1 task-18
-> 8 2.890170 14 51 1.000000
+> 8 2.890170 18 51 1.000000
 > 12 2.890170 4 51 6
 > 13 2.890170 4 51
 > 14 2.890170 7 0 SR 51 18
 > 7 2.890170 3 51
 > 6 2.890170 52 3 1 task-17
-> 8 2.890170 14 52 1.000000
+> 9 2.300447 15 3 76296000.000000
+> 8 2.890170 18 52 1.000000
 > 12 2.890170 4 52 6
 > 15 2.890170 7 0 SR 52 17
 > 12 2.890170 4 52 5
+> 10 2.955790 15 3 76296000.000000
 > 13 2.955790 4 43
 > 7 2.955790 3 43
+> 9 2.082294 15 5 48492000.000000
+> 10 3.113392 15 5 48492000.000000
 > 13 3.113392 4 41
 > 7 3.113392 3 41
 > 6 3.173943 53 3 1 task-19
-> 8 3.173943 14 53 1.000000
+> 8 3.173943 18 53 1.000000
 > 12 3.173943 4 53 6
 > 13 3.173943 4 53
 > 14 3.173943 7 0 SR 53 19
 > 7 3.173943 3 53
 > 6 3.173943 54 3 3 task-18
-> 8 3.173943 14 54 1.000000
+> 9 2.685562 15 2 76296000.000000
+> 9 2.890170 15 1 98095000.000000
+> 8 3.173943 18 54 1.000000
 > 12 3.173943 4 54 6
 > 15 3.173943 7 0 SR 54 18
 > 12 3.173943 4 54 5
+> 10 3.173943 15 1 98095000.000000
+> 9 3.194279 14 13 5114134.701194
+> 9 3.194279 14 7 5114134.701194
+> 9 3.194279 14 10 5114134.701194
+> 9 3.194279 14 14 5114134.701194
+> 9 3.194279 14 12 5114134.701194
+> 9 3.194279 14 6 5114134.701194
+> 9 3.194279 14 8 5114134.701194
+> 10 3.340904 15 2 76296000.000000
+> 10 3.340904 14 13 5114134.701194
+> 10 3.340904 14 7 5114134.701194
+> 10 3.340904 14 10 5114134.701194
+> 10 3.340904 14 14 5114134.701194
+> 10 3.340904 14 12 5114134.701194
+> 10 3.340904 14 6 5114134.701194
+> 10 3.340904 14 8 5114134.701194
 > 13 3.340904 4 48
 > 7 3.340904 3 48
 > 6 3.389815 55 3 5 task-19
 > 6 3.389815 56 3 1 task-0
-> 1 15 3 finalize "1 1 1"
-> 8 3.389815 14 55 1.000000
+> 1 19 3 finalize "1 1 1"
+> 9 3.340904 14 13 5114134.701194
+> 9 3.340904 14 7 5114134.701194
+> 9 3.340904 14 10 5114134.701194
+> 9 3.340904 14 14 5114134.701194
+> 9 3.340904 14 12 5114134.701194
+> 9 3.340904 14 6 5114134.701194
+> 9 3.340904 14 8 5114134.701194
+> 10 3.389815 14 13 5114134.701194
+> 10 3.389815 14 7 5114134.701194
+> 10 3.389815 14 10 5114134.701194
+> 10 3.389815 14 14 5114134.701194
+> 10 3.389815 14 12 5114134.701194
+> 10 3.389815 14 6 5114134.701194
+> 10 3.389815 14 8 5114134.701194
+> 8 3.389815 18 55 1.000000
 > 12 3.389815 4 55 6
 > 15 3.389815 7 0 SR 55 19
 > 12 3.389815 4 55 5
-> 8 3.389815 15 56 1.000000
+> 8 3.389815 19 56 1.000000
 > 12 3.389815 4 56 6
 > 13 3.389815 4 56
 > 14 3.389815 7 0 SR 56 20
 > 7 3.389815 3 56
+> 9 3.173943 15 1 98095000.000000
+> 10 3.389815 15 1 98095000.000000
+> 9 3.389815 15 1 98095000.000000
+> 10 3.399880 15 1 98095000.000000
 > 13 3.399880 4 52
 > 7 3.399880 3 52
 > 6 3.405015 57 3 2 task-0
-> 8 3.405015 15 57 1.000000
+> 8 3.405015 19 57 1.000000
 > 12 3.405015 4 57 6
 > 15 3.405015 7 0 SR 57 20
 > 7 3.405015 3 57
 > 6 3.405015 58 3 1 task-1
-> 8 3.405015 15 58 1.000000
+> 8 3.405015 19 58 1.000000
 > 12 3.405015 4 58 6
 > 13 3.405015 4 58
 > 14 3.405015 7 0 SR 58 21
 > 7 3.405015 3 58
 > 6 3.405171 59 3 1 task-1
-> 8 3.405171 15 59 1.000000
+> 8 3.405171 19 59 1.000000
 > 12 3.405171 4 59 6
 > 15 3.405171 7 0 SR 59 21
 > 7 3.405171 3 59
 > 6 3.405171 60 3 1 task-2
-> 8 3.405171 15 60 1.000000
+> 8 3.405171 19 60 1.000000
 > 12 3.405171 4 60 6
 > 13 3.405171 4 60
 > 14 3.405171 7 0 SR 60 22
 > 7 3.405171 3 60
+> 9 3.173943 15 3 76296000.000000
+> 10 3.829285 15 3 76296000.000000
 > 13 3.829285 4 54
 > 7 3.829285 3 54
 > 6 3.849836 61 3 1 task-3
-> 8 3.849836 15 61 1.000000
+> 8 3.849836 19 61 1.000000
 > 12 3.849836 4 61 6
 > 13 3.849836 4 61
 > 14 3.849836 7 0 SR 61 23
 > 7 3.849836 3 61
 > 6 3.849836 62 3 3 task-2
-> 8 3.849836 15 62 1.000000
+> 8 3.849836 19 62 1.000000
 > 12 3.849836 4 62 6
 > 15 3.849836 7 0 SR 62 22
 > 7 3.849836 3 62
+> 9 2.869854 15 4 48492000.000000
+> 10 3.900952 15 4 48492000.000000
 > 13 3.900952 4 50
 > 7 3.900952 3 50
 > 6 3.914183 63 3 1 task-4
-> 8 3.914183 15 63 1.000000
+> 8 3.914183 19 63 1.000000
 > 12 3.914183 4 63 6
 > 13 3.914183 4 63
 > 14 3.914183 7 0 SR 63 24
 > 7 3.914183 3 63
 > 6 3.914183 64 3 4 task-3
-> 8 3.914183 15 64 1.000000
+> 8 3.914183 19 64 1.000000
 > 12 3.914183 4 64 6
 > 15 3.914183 7 0 SR 64 23
 > 7 3.914183 3 64
+> 9 3.389815 15 5 48492000.000000
+> 10 4.420913 15 5 48492000.000000
 > 13 4.420913 4 55
 > 7 4.420913 3 55
 > 6 4.441249 65 3 5 task-4
-> 8 4.441249 15 65 1.000000
+> 8 4.441249 19 65 1.000000
 > 12 4.441249 4 65 6
 > 15 4.441249 7 0 SR 65 24
 > 7 4.441249 3 65
diff --git a/examples/msg/tracing/volume.c b/examples/msg/tracing/volume.c
deleted file mode 100644 (file)
index c19720a..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*     $Id$     */
-
-/* Copyright (c) 2002,2003,2004 Arnaud Legrand. All rights reserved.        */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include <stdio.h>
-#include "msg/msg.h"
-#include "xbt/sysdep.h"         /* calloc, printf */
-
-/* Create a log channel to have nice outputs. */
-#include "xbt/log.h"
-#include "xbt/asserts.h"
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,
-                             "Messages specific for this msg example");
-
-int master(int argc, char *argv[]);
-int slave(int argc, char *argv[]);
-MSG_error_t test_all(const char *platform_file,
-                     const char *application_file);
-
-/** Emitter function  */
-int master(int argc, char *argv[])
-{
-  long number_of_tasks = atol(argv[1]);
-  long slaves_count = atol(argv[4]);
-  int p = 1000000000;
-  int c = 10000000;
-
-  int i;
-  for (i = 0; i < number_of_tasks; i++) {
-    m_task_t task = NULL;
-    task = MSG_task_create("task_compute", p, c, NULL);
-    TRACE_msg_set_task_category(task, "compute");
-    MSG_task_send(task, "master_mailbox");
-    task = NULL;
-    task = MSG_task_create("task_request", p, c, NULL);
-    TRACE_msg_set_task_category(task, "request");
-    MSG_task_send(task, "master_mailbox");
-    task = NULL;
-    task = MSG_task_create("task_data", p, c, NULL);
-    TRACE_msg_set_task_category(task, "data");
-    MSG_task_send(task, "master_mailbox");
-  }
-
-  for (i = 0; i < slaves_count; i++) {
-    m_task_t finalize = MSG_task_create("finalize", 0, 1000, 0);
-    TRACE_msg_set_task_category(finalize, "finalize");
-    MSG_task_send(finalize, "master_mailbox");
-  }
-
-  return 0;
-}
-
-/** Receiver function  */
-int slave(int argc, char *argv[])
-{
-  m_task_t task = NULL;
-  int res;
-
-  while (1) {
-    res = MSG_task_receive(&(task), "master_mailbox");
-
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    MSG_task_execute(task);
-    MSG_task_destroy(task);
-    task = NULL;
-  }
-  return 0;
-}
-
-/** Test function */
-MSG_error_t test_all(const char *platform_file,
-                     const char *application_file)
-{
-  MSG_error_t res = MSG_OK;
-
-  {                             /*  Simulation setting */
-    MSG_set_channel_number(0);
-    MSG_create_environment(platform_file);
-  }
-  {
-    //--cfg=tracing/msg/volume
-    // - the communication volume among processes expects that:
-    //     - the processes involved have a category
-    //     - the sent tasks have a category
-
-    //declaring user categories (for tasks)
-    TRACE_category_with_color ("compute", "1 0 0"); //red
-    TRACE_category_with_color ("request", "0 1 0"); //green
-    TRACE_category_with_color ("data", "0 0 1");    //blue
-    TRACE_category_with_color ("finalize", "0 0 0");//black
-  }
-  {                             /*   Application deployment */
-    MSG_function_register("master", master);
-    MSG_function_register("slave", slave);
-    MSG_launch_application(application_file);
-  }
-  res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return res;
-}
-
-
-/** Main function */
-int main(int argc, char *argv[])
-{
-  MSG_error_t res = MSG_OK;
-
-  MSG_global_init(&argc, argv);
-  if (argc < 3) {
-    printf("Usage: %s platform_file deployment_file\n", argv[0]);
-    printf("example: %s msg_platform.xml msg_deployment.xml\n", argv[0]);
-    exit(1);
-  }
-
-  res = test_all(argv[1], argv[2]);
-  MSG_clean();
-
-  if (res == MSG_OK)
-    return 0;
-  else
-    return 1;
-}                               /* end_of_main */
diff --git a/examples/msg/tracing/volume.tesh b/examples/msg/tracing/volume.tesh
deleted file mode 100644 (file)
index 1f1ee0a..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-#! ./tesh
-
-p Tracing communications among processes of a master/slave application
-
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/volume$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/volume.trace --cfg=tracing/msg/volume:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/volume.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/volume' to '1'
-> [206.701532] [msg_test/INFO] Simulation time 206.702
-
-$ cat tracing/volume.trace
-> %EventDef PajeDefineContainerType 0 
-> %       Alias string 
-> %       ContainerType string 
-> %       Name string 
-> %EndEventDef 
-> %EventDef PajeDefineVariableType 1 
-> %       Alias string 
-> %       ContainerType string 
-> %       Name string 
-> %       Color color 
-> %EndEventDef 
-> %EventDef PajeDefineStateType 2 
-> %       Alias string 
-> %       ContainerType string 
-> %       Name string 
-> %EndEventDef 
-> %EventDef PajeDefineEventType 3 
-> %       Alias string 
-> %       EntityType string 
-> %       Name string 
-> %       Color color 
-> %EndEventDef 
-> %EventDef PajeDefineLinkType 4 
-> %       Alias string 
-> %       ContainerType string 
-> %       SourceContainerType string 
-> %       DestContainerType string 
-> %       Name string 
-> %EndEventDef 
-> %EventDef PajeDefineEntityValue 5 
-> %       Alias string 
-> %       EntityType string 
-> %       Name string 
-> %       Color color 
-> %EndEventDef 
-> %EventDef PajeCreateContainer 6 
-> %       Time date 
-> %       Alias string 
-> %       Type string 
-> %       Container string 
-> %       Name string 
-> %EndEventDef 
-> %EventDef PajeDestroyContainer 7 
-> %       Time date 
-> %       Type string 
-> %       Container string 
-> %EndEventDef 
-> %EventDef PajeSetVariable 8 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> %EventDef PajeAddVariable 9 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> %EventDef PajeSubVariable 10 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> %EventDef PajeSetState 11 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> %EventDef PajePushState 12 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> %EventDef PajePopState 13 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %EndEventDef
-> %EventDef PajeStartLink 14 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %       SourceContainer string 
-> %       Key string 
-> %EndEventDef
-> %EventDef PajeEndLink 15 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %       DestContainer string 
-> %       Key string 
-> %EndEventDef
-> %EventDef PajeNewEvent 16 
-> %       Time date 
-> %       EntityType string 
-> %       Container string 
-> %       Value string 
-> %EndEventDef
-> 0 1 0 HOST
-> 6 0 1 1 0 Tremblay
-> 1 2 1 power "1 1 1"
-> 6 0 2 1 0 Jupiter
-> 6 0 3 1 0 Fafard
-> 6 0 4 1 0 Ginette
-> 6 0 5 1 0 Bourassa
-> 0 3 0 LINK
-> 6 0 6 3 0 6
-> 1 4 3 bandwidth "1 1 1"
-> 1 5 3 latency "1 1 1"
-> 6 0 7 3 0 3
-> 6 0 8 3 0 7
-> 6 0 9 3 0 9
-> 6 0 10 3 0 2
-> 6 0 11 3 0 8
-> 6 0 12 3 0 1
-> 6 0 13 3 0 4
-> 6 0 14 3 0 0
-> 6 0 15 3 0 5
-> 4 6 0 1 3 HOST-LINK
-> 4 7 0 3 3 LINK-LINK
-> 4 8 0 3 1 LINK-HOST
-> 8 0 2 1 98095000.000000
-> 8 0 2 2 76296000.000000
-> 8 0 2 3 76296000.000000
-> 8 0 2 4 48492000.000000
-> 8 0 2 5 48492000.000000
-> 8 0 4 6 41279125.000000
-> 8 0 5 6 0.000060
-> 8 0 4 7 34285625.000000
-> 8 0 5 7 0.000514
-> 8 0 4 8 11618875.000000
-> 8 0 5 8 0.000190
-> 8 0 4 9 7209750.000000
-> 8 0 5 9 0.001462
-> 8 0 4 10 118682500.000000
-> 8 0 5 10 0.000137
-> 8 0 4 11 8158000.000000
-> 8 0 5 11 0.000271
-> 8 0 4 12 34285625.000000
-> 8 0 5 12 0.000514
-> 8 0 4 13 10099625.000000
-> 8 0 5 13 0.000480
-> 8 0 4 14 41279125.000000
-> 8 0 5 14 0.000060
-> 8 0 4 15 27946250.000000
-> 8 0 5 15 0.000278
-> 14 0 6 0 G 3 0
-> 15 0 6 0 G 11 0
-> 14 0 7 0 G 11 1
-> 15 0 7 0 G 12 1
-> 14 0 7 0 G 12 2
-> 15 0 7 0 G 14 2
-> 14 0 7 0 G 14 3
-> 15 0 7 0 G 10 3
-> 14 0 7 0 G 10 4
-> 15 0 7 0 G 7 4
-> 14 0 7 0 G 7 5
-> 15 0 7 0 G 13 5
-> 14 0 8 0 G 13 6
-> 15 0 8 0 G 1 6
-> 14 0 7 0 G 11 7
-> 15 0 7 0 G 6 7
-> 14 0 7 0 G 6 8
-> 15 0 7 0 G 8 8
-> 14 0 8 0 G 8 9
-> 15 0 8 0 G 5 9
-> 14 0 7 0 G 13 10
-> 15 0 7 0 G 9 10
-> 14 0 8 0 G 9 11
-> 15 0 8 0 G 2 11
-> 14 0 7 0 G 10 12
-> 15 0 7 0 G 15 12
-> 14 0 8 0 G 15 13
-> 15 0 8 0 G 4 13
-> 14 0 7 0 G 12 14
-> 15 0 7 0 G 6 14
-> 14 0 6 0 G 1 15
-> 15 0 6 0 G 9 15
-> 14 0 7 0 G 7 16
-> 15 0 7 0 G 15 16
-> 7 206.701532 1 3
-> 7 206.701532 1 1
-> 7 206.701532 3 14
-> 7 206.701532 3 12
-> 7 206.701532 3 10
-> 7 206.701532 3 7
-> 7 206.701532 3 13
-> 7 206.701532 3 15
-> 7 206.701532 3 6
-> 7 206.701532 3 8
-> 7 206.701532 3 11
-> 7 206.701532 3 9
-> 7 206.701532 1 5
-> 7 206.701532 1 2
-> 7 206.701532 1 4
-> 7 206.701532 0 0
-
-$ rm -rf tracing/volume.trace
index df314b9..75c4f20 100644 (file)
@@ -2,7 +2,7 @@
 # (since we want to pass it to the child, it has to be redefined before each command)
 # Go for the first test
 p Test instrumentation of SMPI
-$ ../../bin/smpirun -trace smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced 
+$ ../../bin/smpirun -trace -trace-resource -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced 
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'TCP_gamma' to '4194304'
@@ -12,3 +12,5 @@ $ ../../bin/smpirun -trace smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -pl
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+
+$ rm -f smpi_traced.trace
index e94d198..1c97865 100644 (file)
 
 XBT_PUBLIC(void) TRACE_category(const char *category);
 XBT_PUBLIC(void) TRACE_category_with_color (const char *category, const char *color);
-XBT_PUBLIC(void) TRACE_msg_set_task_category(m_task_t task,
-                                             const char *category);
-void TRACE_msg_set_process_category(m_process_t process, const char *category, const char *color);
+XBT_PUBLIC(void) TRACE_msg_set_task_category(m_task_t task, const char *category);
+XBT_PUBLIC(void) TRACE_msg_set_process_category(m_process_t process, const char *category, const char *color);
+XBT_PUBLIC(void) TRACE_smpi_set_category(const char *category);
+XBT_PUBLIC(void) TRACE_sd_set_task_category(SD_task_t task, const char *category);
+
+XBT_PUBLIC(void) TRACE_declare_mark(const char *mark_type);
+XBT_PUBLIC(void) TRACE_mark(const char *mark_type, const char *mark_value);
 
 XBT_PUBLIC(const char *) TRACE_node_name (xbt_node_t node);
 XBT_PUBLIC(xbt_graph_t) TRACE_platform_graph (void);
 XBT_PUBLIC(void) TRACE_platform_graph_export_graphviz (xbt_graph_t g, const char *filename);
-XBT_PUBLIC(void) TRACE_declare_mark(const char *mark_type);
-XBT_PUBLIC(void) TRACE_mark(const char *mark_type, const char *mark_value);
-XBT_PUBLIC(void) TRACE_smpi_set_category(const char *category);
-XBT_PUBLIC(void) TRACE_sd_set_task_category(SD_task_t task,
-                                            const char *category);
 
 /*
  * User-variables related functions
  */
-typedef enum {
-  INSTR_US_DECLARE,
-  INSTR_US_SET,
-  INSTR_US_ADD,
-  INSTR_US_SUB,
-} InstrUserVariable;
-
-XBT_PUBLIC(void) TRACE_user_variable(double time,
-                              const char *resource,
-                              const char *variable,
-                              const char *father_type,
-                              double value,
-                              InstrUserVariable what);
-
-#define TRACE_host_variable_declare(var) \
-       TRACE_user_variable(0,NULL,var,"HOST",0,INSTR_US_DECLARE);
-
-#define TRACE_host_variable_set_with_time(time,host,var,value) \
-       TRACE_user_variable(time,host,var,"HOST",value,INSTR_US_SET);
-
-#define TRACE_host_variable_add_with_time(time,host,var,value) \
-       TRACE_user_variable(time,host,var,"HOST",value,INSTR_US_ADD);
-
-#define TRACE_host_variable_sub_with_time(time,host,var,value) \
-       TRACE_user_variable(time,host,var,"HOST",value,INSTR_US_SUB);
-
-#define TRACE_host_variable_set(host,var,value) \
-       TRACE_user_variable(MSG_get_clock(),host,var,"HOST",value,INSTR_US_SET);
-
-#define TRACE_host_variable_add(host,var,value) \
-       TRACE_user_variable(MSG_get_clock(),host,var,"HOST",value,INSTR_US_ADD);
-
-#define TRACE_host_variable_sub(host,var,value) \
-       TRACE_user_variable(MSG_get_clock(),host,var,"HOST",value,INSTR_US_SUB);
-
-#define TRACE_link_variable_declare(var) \
-       TRACE_user_variable(0,NULL,var,"LINK",0,INSTR_US_DECLARE);
-
-#define TRACE_link_variable_set_with_time(time,link,var,value) \
-       TRACE_user_variable(time,link,var,"LINK",value,INSTR_US_SET);
-
-#define TRACE_link_variable_add_with_time(time,link,var,value) \
-       TRACE_user_variable(time,link,var,"LINK",value,INSTR_US_ADD);
+/* for host variables */
+XBT_PUBLIC(void) TRACE_host_variable_declare (const char *var);
+XBT_PUBLIC(void) TRACE_host_variable_set (const char *host, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_host_variable_add (const char *host, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_host_variable_sub (const char *host, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_host_variable_set_with_time (double time, const char *host, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_host_variable_add_with_time (double time, const char *host, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_host_variable_sub_with_time (double time, const char *host, const char *variable, double value);
+
+/* for link variables */
+XBT_PUBLIC(void) TRACE_link_variable_declare (const char *var);
+XBT_PUBLIC(void) TRACE_link_variable_set (const char *link, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_variable_add (const char *link, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_variable_sub (const char *link, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_variable_set_with_time (double time, const char *link, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_variable_add_with_time (double time, const char *link, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_variable_sub_with_time (double time, const char *link, const char *variable, double value);
+
+/* for link variables, but with src and dst used for get_route */
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_set (const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_add (const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub (const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value);
+XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value);
 
-#define TRACE_link_variable_sub_with_time(time,link,var,value) \
-       TRACE_user_variable(time,link,var,"LINK",value,INSTR_US_SUB);
-
-#define TRACE_link_variable_set(link,var,value) \
-       TRACE_user_variable(MSG_get_clock(),link,var,"LINK",value,INSTR_US_SET);
+#else                           /* HAVE_TRACING */
 
-#define TRACE_link_variable_add(link,var,value) \
-       TRACE_user_variable(MSG_get_clock(),link,var,"LINK",value,INSTR_US_ADD);
+#define TRACE_category(category)
+#define TRACE_category_with_color(category,color)
+#define TRACE_msg_set_task_category(task,category)
+#define TRACE_msg_set_process_category(process,category,color)
+#define TRACE_smpi_set_category(category)
+#define TRACE_sd_set_task_category(task,category)
 
-#define TRACE_link_variable_sub(link,var,value) \
-       TRACE_user_variable(MSG_get_clock(),link,var,"LINK",value,INSTR_US_SUB);
+#define TRACE_declare_mark(mark_type)
+#define TRACE_mark(mark_type,mark_value)
 
-#else                           /* HAVE_TRACING */
-
-#define TRACE_category(cat)
-#define TRACE_category_with_color(cat,color)
-#define TRACE_msg_set_task_category(task,cat)
-#define TRACE_msg_set_process_category(proc,cat,color)
-#define TRACE_set_mask(mask)
+#define TRACE_node_name(node)
+#define TRACE_platform_graph(void)
+#define TRACE_platform_graph_export_graphviz(g,filename)
 
 #define TRACE_host_variable_declare(var)
-#define TRACE_host_variable_set_with_time(time,host,var,value)
-#define TRACE_host_variable_add_with_time(time,host,var,value)
-#define TRACE_host_variable_sub_with_time(time,host,var,value)
 #define TRACE_host_variable_set(host,var,value)
 #define TRACE_host_variable_add(host,var,value)
 #define TRACE_host_variable_sub(host,var,value)
+#define TRACE_host_variable_set_with_time(time,host,var,value)
+#define TRACE_host_variable_add_with_time(time,host,var,value)
+#define TRACE_host_variable_sub_with_time(time,host,var,value)
+
 #define TRACE_link_variable_declare(var)
-#define TRACE_link_variable_set_with_time(time,link,var,value)
-#define TRACE_link_variable_add_with_time(time,link,var,value)
-#define TRACE_link_variable_sub_with_time(time,link,var,value)
 #define TRACE_link_variable_set(link,var,value)
 #define TRACE_link_variable_add(link,var,value)
 #define TRACE_link_variable_sub(link,var,value)
-#define TRACE_declare_mark(type)
-#define TRACE_mark(type,value)
-#define TRACE_smpi_set_category(cat)
-#define TRACE_sd_set_task_category(task,cat)
+#define TRACE_link_variable_set_with_time(time,link,var,value)
+#define TRACE_link_variable_add_with_time(time,link,var,value)
+#define TRACE_link_variable_sub_with_time(time,link,var,value)
+
+#define TRACE_link_srcdst_variable_set(src,dst,var,value)
+#define TRACE_link_srcdst_variable_add(src,dst,var,value)
+#define TRACE_link_srcdst_variable_sub(src,dst,var,value)
+#define TRACE_link_srcdst_variable_set_with_time(time,src,dst,var,value)
+#define TRACE_link_srcdst_variable_add_with_time(time,src,dst,var,value)
+#define TRACE_link_srcdst_variable_sub_with_time(time,src,dst,var,value)
 
 #endif                          /* HAVE_TRACING */
 
index 0027e25..4ebfde4 100644 (file)
@@ -1,5 +1,4 @@
 /* XML processor/application API for src/surf/simgrid.dtd.
- * Generated 2011/04/11 09:38:38.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index 48ef5fe..556b0c0 100644 (file)
@@ -1,5 +1,4 @@
 /* XML processor/application API for src/xbt/graphxml.dtd.
- * Generated 2010/12/01 17:15:43.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index da77f22..1bd308f 100644 (file)
@@ -13,13 +13,13 @@ XBT_LOG_NEW_CATEGORY(instr, "Logging the behavior of the tracing system (used fo
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 
 #define OPT_TRACING               "tracing"
+#define OPT_TRACING_PLATFORM      "tracing/platform"
 #define OPT_TRACING_SMPI          "tracing/smpi"
 #define OPT_TRACING_SMPI_GROUP    "tracing/smpi/group"
 #define OPT_TRACING_CATEGORIZED   "tracing/categorized"
 #define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized"
 #define OPT_TRACING_MSG_TASK      "tracing/msg/task"
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
-#define OPT_TRACING_MSG_VOLUME    "tracing/msg/volume"
 #define OPT_TRACING_FILENAME      "tracing/filename"
 #define OPT_TRACING_BUFFER        "tracing/buffer"
 #define OPT_TRACING_ONELINK_ONLY  "tracing/onelink_only"
@@ -27,13 +27,13 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 #define OPT_TRIVA_CAT_CONF        "triva/categorized"
 
 static int trace_enabled;
+static int trace_platform;
 static int trace_smpi_enabled;
 static int trace_smpi_grouped;
 static int trace_categorized;
 static int trace_uncategorized;
 static int trace_msg_task_enabled;
 static int trace_msg_process_enabled;
-static int trace_msg_volume_enabled;
 static int trace_buffer;
 static int trace_onelink_only;
 
@@ -45,13 +45,13 @@ xbt_dict_t created_categories; //declared in instr_interface.c
 static void TRACE_getopts(void)
 {
   trace_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING);
+  trace_platform = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_PLATFORM);
   trace_smpi_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_SMPI);
   trace_smpi_grouped = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_SMPI_GROUP);
   trace_categorized = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_CATEGORIZED);
   trace_uncategorized = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_UNCATEGORIZED);
   trace_msg_task_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_TASK);
   trace_msg_process_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_PROCESS);
-  trace_msg_volume_enabled = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_MSG_VOLUME);
   trace_buffer = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_BUFFER);
   trace_onelink_only = xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_ONELINK_ONLY);
 }
@@ -73,7 +73,9 @@ int TRACE_start()
   TRACE_paje_start();
 
   /* activate trace */
-  TRACE_activate ();
+  xbt_assert (trace_active==0, "Tracing is already active.");
+  trace_active = 1;
+  XBT_DEBUG ("Tracing is on");
 
   /* other trace initialization */
   created_categories = xbt_dict_new();
@@ -84,7 +86,7 @@ int TRACE_start()
 
 int TRACE_end()
 {
-  if (!TRACE_is_active())
+  if (!trace_active)
     return 1;
 
   /* generate uncategorized graph configuration for triva */
@@ -107,33 +109,31 @@ int TRACE_end()
   /* close the trace file */
   TRACE_paje_end();
 
-  /* activate trace */
-  TRACE_desactivate ();
+  /* de-activate trace */
+  trace_active = 0;
+  XBT_DEBUG ("Tracing is off");
   XBT_DEBUG("Tracing system is shutdown");
   return 0;
 }
 
-void TRACE_activate (void)
+int TRACE_needs_platform (void)
 {
-  xbt_assert (trace_active==0, "Tracing is already active.");
-  trace_active = 1;
-  XBT_DEBUG ("Tracing is on");
+  return TRACE_msg_process_is_enabled() ||
+         TRACE_msg_task_is_enabled() ||
+         TRACE_categorized() ||
+         TRACE_uncategorized() ||
+         TRACE_platform () ||
+         (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped());
 }
 
-void TRACE_desactivate (void)
-{
-  trace_active = 0;
-  XBT_DEBUG ("Tracing is off");
-}
-
-int TRACE_is_active (void)
+int TRACE_is_enabled(void)
 {
-  return trace_active;
+  return trace_enabled;
 }
 
-int TRACE_is_enabled(void)
+int TRACE_platform(void)
 {
-  return trace_enabled;
+  return trace_platform;
 }
 
 int TRACE_is_configured(void)
@@ -143,7 +143,9 @@ int TRACE_is_configured(void)
 
 int TRACE_smpi_is_enabled(void)
 {
-  return trace_smpi_enabled && TRACE_is_enabled();
+  return (xbt_cfg_get_int(_surf_cfg_set, OPT_TRACING_SMPI) ||
+       TRACE_smpi_is_grouped())&&
+      TRACE_is_enabled();
 }
 
 int TRACE_smpi_is_grouped(void)
@@ -171,11 +173,6 @@ int TRACE_msg_process_is_enabled(void)
   return trace_msg_process_enabled && TRACE_is_enabled();
 }
 
-int TRACE_msg_volume_is_enabled(void)
-{
-  return trace_msg_volume_enabled && TRACE_is_enabled();
-}
-
 int TRACE_buffer (void)
 {
   return trace_buffer && TRACE_is_enabled();
@@ -217,6 +214,13 @@ void TRACE_global_init(int *argc, char **argv)
                    xbt_cfgelm_int, &default_tracing, 0, 1,
                    NULL, NULL);
 
+  /* tracing platform*/
+  int default_tracing_platform = 0;
+  xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_PLATFORM,
+                   "Enable Tracing Platform.",
+                   xbt_cfgelm_int, &default_tracing_platform, 0, 1,
+                   NULL, NULL);
+
   /* smpi */
   int default_tracing_smpi = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_SMPI,
@@ -233,10 +237,10 @@ void TRACE_global_init(int *argc, char **argv)
 
 
   /* platform */
-  int default_tracing_platform = 0;
+  int default_tracing_categorized = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_CATEGORIZED,
                    "Tracing of categorized platform (host and link) utilization.",
-                   xbt_cfgelm_int, &default_tracing_platform, 0, 1,
+                   xbt_cfgelm_int, &default_tracing_categorized, 0, 1,
                    NULL, NULL);
 
   /* tracing uncategorized resource utilization */
@@ -260,21 +264,14 @@ void TRACE_global_init(int *argc, char **argv)
                    xbt_cfgelm_int, &default_tracing_msg_process, 0, 1,
                    NULL, NULL);
 
-  /* msg volume (experimental) */
-  int default_tracing_msg_volume = 0;
-  xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_MSG_VOLUME,
-                   "Tracing of MSG communication volume (experimental).",
-                   xbt_cfgelm_int, &default_tracing_msg_volume, 0, 1,
-                   NULL, NULL);
-
-  /* msg volume (experimental) */
+  /* tracing buffer */
   int default_buffer = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_BUFFER,
                    "Buffer trace events to put them in temporal order.",
                    xbt_cfgelm_int, &default_buffer, 0, 1,
                    NULL, NULL);
 
-  /* msg volume (experimental) */
+  /* tracing one link only */
   int default_onelink_only = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_ONELINK_ONLY,
                    "Use only routes with one link to trace platform.",
@@ -354,10 +351,6 @@ void TRACE_help (int detailed)
       "  behavior of all categorized MSG processes, grouping them by hosts. This option\n"
       "  can be used to track process location if this simulator has process migration.",
       detailed);
-  print_line (OPT_TRACING_MSG_VOLUME, "Tracing of communication volume (MSG)",
-      "  This experimental option only has effect if this simulator is MSG-based.\n"
-      "  It traces the communication volume of MSG send/receive.",
-      detailed);
   print_line (OPT_TRACING_BUFFER, "Buffer events to put them in temporal order",
       "  This option put some events in a time-ordered buffer using the insertion\n"
       "  sort algorithm. The process of acquiring and releasing locks to access this\n"
@@ -505,6 +498,7 @@ void TRACE_generate_triva_cat_conf (void)
 }
 
 #undef OPT_TRACING
+#undef OPT_TRACING_PLATFORM
 #undef OPT_TRACING_SMPI
 #undef OPT_TRACING_SMPI_GROUP
 #undef OPT_TRACING_CATEGORIZED
index df4d026..12966a6 100644 (file)
@@ -9,6 +9,14 @@
 #ifdef HAVE_TRACING
 
 #include "instr/instr_private.h"
+#include "surf/network_private.h"
+
+typedef enum {
+  INSTR_US_DECLARE,
+  INSTR_US_SET,
+  INSTR_US_ADD,
+  INSTR_US_SUB,
+} InstrUserVariable;
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_api, instr, "API");
 
@@ -19,7 +27,7 @@ void TRACE_category(const char *category)
 
 void TRACE_category_with_color (const char *category, const char *color)
 {
-  if (!(TRACE_is_active() && category != NULL))
+  if (!(TRACE_categorized() && category != NULL))
     return;
 
   xbt_assert (instr_platform_traced(),
@@ -44,29 +52,13 @@ void TRACE_category_with_color (const char *category, const char *color)
 
   XBT_DEBUG("CAT,declare %s, %s", category, final_color);
 
-//FIXME
-//  -  if (final) {
-//  -    //for m_process_t
-//  -    if (TRACE_msg_process_is_enabled())
-//  -      pajeDefineContainerType("process", type, "process");
-//  -    if (TRACE_msg_process_is_enabled())
-//  -      pajeDefineStateType("process-state", "process", "process-state");
-//  -
-//  -    if (TRACE_msg_task_is_enabled())
-//  -      pajeDefineContainerType("task", type, "task");
-//  -    if (TRACE_msg_task_is_enabled())
-//  -      pajeDefineStateType("task-state", "task", "task-state");
-//  -  }
-
   //define the type of this category on top of hosts and links
-  if (TRACE_categorized ()){
-    instr_new_variable_type (category, final_color);
-  }
+  instr_new_variable_type (category, final_color);
 }
 
 void TRACE_declare_mark(const char *mark_type)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
   if (!mark_type)
     return;
@@ -77,7 +69,7 @@ void TRACE_declare_mark(const char *mark_type)
 
 void TRACE_mark(const char *mark_type, const char *mark_value)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
   if (!mark_type || !mark_value)
     return;
@@ -88,14 +80,14 @@ void TRACE_mark(const char *mark_type, const char *mark_value)
   new_pajeNewEvent (MSG_get_clock(), getRootContainer(), type, value);
 }
 
-void TRACE_user_variable(double time,
+static void instr_user_variable(double time,
                          const char *resource,
                          const char *variable,
                          const char *father_type,
                          double value,
                          InstrUserVariable what)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
 
   xbt_assert (instr_platform_traced(),
@@ -135,6 +127,23 @@ void TRACE_user_variable(double time,
   }
 }
 
+static void instr_user_srcdst_variable(double time,
+                              const char *src,
+                              const char *dst,
+                              const char *variable,
+                              const char *father_type,
+                              double value,
+                              InstrUserVariable what)
+{
+  xbt_dynar_t route = global_routing->get_route (src, dst);
+  unsigned int i;
+  void *link;
+  xbt_dynar_foreach (route, i, link) {
+    char *link_name = ((link_CM02_t)link)->lmm_resource.generic_resource.name;
+    instr_user_variable (time, link_name, variable, father_type, value, what);
+  }
+}
+
 const char *TRACE_node_name (xbt_node_t node)
 {
   void *data = xbt_graph_node_get_data(node);
@@ -144,7 +153,7 @@ const char *TRACE_node_name (xbt_node_t node)
 
 xbt_graph_t TRACE_platform_graph (void)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return NULL;
 
   return instr_routing_platform_graph ();
@@ -155,4 +164,114 @@ void TRACE_platform_graph_export_graphviz (xbt_graph_t g, const char *filename)
   instr_routing_platform_graph_export_graphviz (g, filename);
 }
 
+
+/*
+ * Derived functions that use instr_user_variable and TRACE_user_srcdst_variable.
+ * They were previously defined as pre-processors directives, but were transformed
+ * into functions so the user can track them using gdb.
+ */
+
+/* for host variables */
+void TRACE_host_variable_declare (const char *var)
+{
+  instr_user_variable(0, NULL, var, "HOST", 0, INSTR_US_DECLARE);
+}
+
+void TRACE_host_variable_set (const char *host, const char *variable, double value)
+{
+  TRACE_host_variable_set_with_time (MSG_get_clock(), host, variable, value);
+}
+
+void TRACE_host_variable_add (const char *host, const char *variable, double value)
+{
+  TRACE_host_variable_add_with_time (MSG_get_clock(), host, variable, value);
+}
+
+void TRACE_host_variable_sub (const char *host, const char *variable, double value)
+{
+  TRACE_host_variable_sub_with_time (MSG_get_clock(), host, variable, value);
+}
+
+void TRACE_host_variable_set_with_time (double time, const char *host, const char *variable, double value)
+{
+  instr_user_variable(time, host, variable, "HOST", value, INSTR_US_SET);
+}
+
+void TRACE_host_variable_add_with_time (double time, const char *host, const char *variable, double value)
+{
+  instr_user_variable(time, host, variable, "HOST", value, INSTR_US_ADD);
+}
+
+void TRACE_host_variable_sub_with_time (double time, const char *host, const char *variable, double value)
+{
+  instr_user_variable(time, host, variable, "HOST", value, INSTR_US_SUB);
+}
+
+/* for link variables */
+void TRACE_link_variable_declare (const char *var)
+{
+  instr_user_variable (0, NULL, var, "LINK", 0, INSTR_US_DECLARE);
+}
+
+void TRACE_link_variable_set (const char *link, const char *variable, double value)
+{
+  TRACE_link_variable_set_with_time (MSG_get_clock(), link, variable, value);
+}
+
+void TRACE_link_variable_add (const char *link, const char *variable, double value)
+{
+  TRACE_link_variable_add_with_time (MSG_get_clock(), link, variable, value);
+}
+
+void TRACE_link_variable_sub (const char *link, const char *variable, double value)
+{
+  TRACE_link_variable_sub_with_time (MSG_get_clock(), link, variable, value);
+}
+
+void TRACE_link_variable_set_with_time (double time, const char *link, const char *variable, double value)
+{
+  instr_user_variable (time, link, variable, "LINK", value, INSTR_US_SET);
+}
+
+void TRACE_link_variable_add_with_time (double time, const char *link, const char *variable, double value)
+{
+  instr_user_variable (time, link, variable, "LINK", value, INSTR_US_ADD);
+}
+
+void TRACE_link_variable_sub_with_time (double time, const char *link, const char *variable, double value)
+{
+  instr_user_variable (time, link, variable, "LINK", value, INSTR_US_SUB);
+}
+
+/* for link variables, but with src and dst used for get_route */
+void TRACE_link_srcdst_variable_set (const char *src, const char *dst, const char *variable, double value)
+{
+  TRACE_link_srcdst_variable_set_with_time (MSG_get_clock(), src, dst, variable, value);
+}
+
+void TRACE_link_srcdst_variable_add (const char *src, const char *dst, const char *variable, double value)
+{
+  TRACE_link_srcdst_variable_add_with_time (MSG_get_clock(), src, dst, variable, value);
+}
+
+void TRACE_link_srcdst_variable_sub (const char *src, const char *dst, const char *variable, double value)
+{
+  TRACE_link_srcdst_variable_sub_with_time (MSG_get_clock(), src, dst, variable, value);
+}
+
+void TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value)
+{
+  instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SET);
+}
+
+void TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value)
+{
+  instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_ADD);
+}
+
+void TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value)
+{
+  instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SUB);
+}
+
 #endif /* HAVE_TRACING */
index 924ae90..b75039e 100644 (file)
@@ -15,7 +15,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_msg, instr, "MSG");
  */
 void TRACE_msg_set_task_category(m_task_t task, const char *category)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_categorized())
     return;
 
   xbt_assert(task->category == NULL, "Task %p(%s) already has a category (%s).",
@@ -154,11 +154,6 @@ void TRACE_msg_task_get_end(double start_time, m_task_t task)
 
   if (TRACE_msg_task_is_enabled()){
 
-    //FIXME
-    //if (TRACE_msg_volume_is_enabled()){
-    //  TRACE_msg_volume_end(task);
-    //}
-
     m_host_t host = MSG_host_self();
     container_t host_container = getContainer(host->name);
     container_t msg = newContainer(task->name, INSTR_MSG_TASK, host_container);
@@ -207,11 +202,6 @@ int TRACE_msg_task_put_start(m_task_t task)
     new_pajeStartLink(MSG_get_clock(), getRootContainer(), type, msg, "SR", key);
 
     destroyContainer (msg);
-
-    //FIXME
-    //if (TRACE_msg_volume_is_enabled()){
-    //  TRACE_msg_volume_start(task);
-    //}
   }
 
   if (TRACE_msg_process_is_enabled()){
diff --git a/src/instr/instr_msg_volume.c b/src/instr/instr_msg_volume.c
deleted file mode 100644 (file)
index c8e1842..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright (c) 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
-  * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "instr/instr_private.h"
-
-#ifdef HAVE_TRACING
-
-void TRACE_msg_volume_start(m_task_t task)
-{
-  xbt_die ("tracing/msg/volume:1 is deprecated.");
-//  m_process_t process = NULL;
-//  m_host_t host = NULL;
-//  char process_name[200], process_alias[200];
-//  char task_name[200];
-//  double volume = 0;
-//  if (!TRACE_msg_volume_is_enabled())
-//    return;
-//
-//  /* check if task is traced */
-//  if (!task->category)
-//    return;
-//
-//  /* check if process is traced */
-//  process = MSG_process_self();
-//  if (!process->category)
-//    return;
-//
-//  host = MSG_process_get_host(process);
-//  TRACE_process_container(process, process_name, 200);
-//  TRACE_process_alias_container(process, host, process_alias, 200);
-//  TRACE_task_container(task, task_name, 200);
-//
-//  volume = MSG_task_get_data_size(task);
-//
-//  pajeStartLinkWithVolume(MSG_get_clock(), "volume", "0", task->category,
-//                          process_alias, task_name, volume);
-}
-
-void TRACE_msg_volume_finish(m_task_t task)
-{
-  xbt_die ("tracing/msg/volume:1 is deprecated.");
-//  char process_name[200], process_alias[200];
-//  char task_name[200];
-//  m_process_t process = NULL;
-//  m_host_t host = NULL;
-//  if (!TRACE_msg_volume_is_enabled())
-//    return;
-//
-//  /* check if task is traced */
-//  if (!task->category)
-//    return;
-//
-//  /* check if process is traced */
-//  process = MSG_process_self();
-//  if (!process->category)
-//    return;
-//
-//  host = MSG_process_get_host(process);
-//  TRACE_process_container(process, process_name, 200);
-//  TRACE_process_alias_container(process, host, process_alias, 200);
-//  TRACE_task_container(task, task_name, 200);
-//
-//  pajeEndLink(MSG_get_clock(), "volume", "0", task->category,
-//              process_alias, task_name);
-}
-
-#endif /* HAVE_TRACING */
index cd14471..a8060aa 100644 (file)
@@ -176,6 +176,7 @@ double TRACE_last_timestamp_to_dump = 0;
 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
 void TRACE_paje_dump_buffer (int force)
 {
+  if (!TRACE_is_enabled()) return;
   XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
   if (force){
     paje_event_t event;
index e83f003..c6960bc 100644 (file)
@@ -117,15 +117,6 @@ void TRACE_msg_process_sleep_in(m_process_t process);   //called from msg/gos.c
 void TRACE_msg_process_sleep_out(m_process_t process);
 void TRACE_msg_process_end(m_process_t process);
 
-/* declaration of instrumentation functions from msg_volume.c */
-void TRACE_msg_volume_start(m_task_t task);
-void TRACE_msg_volume_finish(m_task_t task);
-
-/* from smx.c */
-void TRACE_smx_host_execute(smx_action_t act);
-void TRACE_smx_action_communicate(smx_action_t act, smx_process_t proc);
-void TRACE_smx_action_destroy(smx_action_t act);
-
 /* from surf_instr.c */
 void TRACE_surf_alloc(void);
 void TRACE_surf_release(void);
@@ -156,10 +147,9 @@ void TRACE_smpi_recv(int rank, int src, int dst);
 /* from instr_config.c */
 int TRACE_start (void);
 int TRACE_end (void);
-void TRACE_activate (void);
-void TRACE_desactivate (void);
-int TRACE_is_active (void);
+int TRACE_needs_platform (void);
 int TRACE_is_enabled(void);
+int TRACE_platform(void);
 int TRACE_is_configured(void);
 int TRACE_smpi_is_enabled(void);
 int TRACE_smpi_is_grouped(void);
@@ -167,7 +157,6 @@ int TRACE_categorized (void);
 int TRACE_uncategorized (void);
 int TRACE_msg_task_is_enabled(void);
 int TRACE_msg_process_is_enabled(void);
-int TRACE_msg_volume_is_enabled(void);
 int TRACE_buffer (void);
 int TRACE_onelink_only (void);
 char *TRACE_get_filename(void);
index a6b5885..ba5c51b 100644 (file)
@@ -84,10 +84,6 @@ void TRACE_surf_link_set_utilization(const char *resource, smx_action_t smx_acti
                                      double value, double now,
                                      double delta)
 {
-  if (!TRACE_is_active())
-    return;
-  if (!value)
-    return;
   //only trace link utilization if link is known by tracing mechanism
   if (!knownContainerWithName(resource))
     return;
@@ -126,8 +122,6 @@ void TRACE_surf_host_set_utilization(const char *resource,
                                      double value, double now,
                                      double delta)
 {
-  if (!TRACE_is_active())
-    return;
   //only trace host utilization if host is known by tracing mechanism
   if (!knownContainerWithName(resource))
     return;
index 6ee93c3..01e4a1b 100644 (file)
@@ -154,30 +154,33 @@ static void instr_routing_parse_start_AS ()
     container_t root = newContainer (A_surfxml_AS_id, INSTR_AS, NULL);
     instr_paje_init (root);
 
-    currentContainer = xbt_dynar_new (sizeof(container_t), NULL);
-    xbt_dynar_push (currentContainer, &root);
-
     if (TRACE_smpi_is_enabled()) {
       if (!TRACE_smpi_is_grouped()){
-        container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1);
-        type_t mpi = getContainerType("MPI", father->type);
+        type_t mpi = getContainerType("MPI", root->type);
         getStateType ("MPI_STATE", mpi);
         getLinkType ("MPI_LINK", getRootType(), mpi, mpi);
       }
     }
 
+    if (TRACE_needs_platform()){
+      currentContainer = xbt_dynar_new (sizeof(container_t), NULL);
+      xbt_dynar_push (currentContainer, &root);
+    }
     return;
   }
-  container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1);
-  container_t new = newContainer (A_surfxml_AS_id, INSTR_AS, father);
 
-  //push
-  xbt_dynar_push (currentContainer, &new);
+  if (TRACE_needs_platform()){
+    container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1);
+    container_t new = newContainer (A_surfxml_AS_id, INSTR_AS, father);
+    xbt_dynar_push (currentContainer, &new);
+  }
 }
 
 static void instr_routing_parse_end_AS ()
 {
-  xbt_dynar_pop_ptr (currentContainer);
+  if (TRACE_needs_platform()){
+    xbt_dynar_pop_ptr (currentContainer);
+  }
 }
 
 static void instr_routing_parse_start_link ()
@@ -206,10 +209,12 @@ static void instr_routing_parse_start_link ()
 
     container_t new = newContainer (link_name, INSTR_LINK, father);
 
-    type_t bandwidth = getVariableType ("bandwidth", NULL, new->type);
-    type_t latency = getVariableType ("latency", NULL, new->type);
-    new_pajeSetVariable (0, new, bandwidth, bandwidth_value);
-    new_pajeSetVariable (0, new, latency, latency_value);
+    if (TRACE_categorized() || TRACE_uncategorized()){
+      type_t bandwidth = getVariableType ("bandwidth", NULL, new->type);
+      type_t latency = getVariableType ("latency", NULL, new->type);
+      new_pajeSetVariable (0, new, bandwidth, bandwidth_value);
+      new_pajeSetVariable (0, new, latency, latency_value);
+    }
     if (TRACE_uncategorized()){
       getVariableType ("bandwidth_used", "0.5 0.5 0.5", new->type);
     }
@@ -227,18 +232,18 @@ static void instr_routing_parse_start_host ()
   container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1);
   container_t new = newContainer (A_surfxml_host_id, INSTR_HOST, father);
 
-  type_t power = getVariableType ("power", NULL, new->type);
-  new_pajeSetVariable (0, new, power, atof(A_surfxml_host_power));
+  if (TRACE_categorized() || TRACE_uncategorized()) {
+    type_t power = getVariableType ("power", NULL, new->type);
+    new_pajeSetVariable (0, new, power, atof(A_surfxml_host_power));
+  }
   if (TRACE_uncategorized()){
     getVariableType ("power_used", "0.5 0.5 0.5", new->type);
   }
 
-  if (TRACE_smpi_is_enabled()) {
-    if (TRACE_smpi_is_grouped()){
-      type_t mpi = getContainerType("MPI", new->type);
-      getStateType ("MPI_STATE", mpi);
-      getLinkType ("MPI_LINK", getRootType(), mpi, mpi);
-    }
+  if (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped()){
+    type_t mpi = getContainerType("MPI", new->type);
+    getStateType ("MPI_STATE", mpi);
+    getLinkType ("MPI_LINK", getRootType(), mpi, mpi);
   }
 
   if (TRACE_msg_process_is_enabled()) {
@@ -290,10 +295,12 @@ static void instr_routing_parse_end_platform ()
 
 void instr_routing_define_callbacks ()
 {
-  if (!TRACE_is_active())
-    return;
+  if (!TRACE_is_enabled()) return;
+  //always need the call backs to ASes (we need only the root AS),
+  //to create the rootContainer and the rootType properly
   surfxml_add_callback(STag_surfxml_AS_cb_list, &instr_routing_parse_start_AS);
   surfxml_add_callback(ETag_surfxml_AS_cb_list, &instr_routing_parse_end_AS);
+  if (!TRACE_needs_platform()) return;
   surfxml_add_callback(STag_surfxml_link_cb_list, &instr_routing_parse_start_link);
   surfxml_add_callback(ETag_surfxml_link_cb_list, &instr_routing_parse_end_link);
   surfxml_add_callback(STag_surfxml_host_cb_list, &instr_routing_parse_start_host);
index dc7c556..067b954 100644 (file)
@@ -22,7 +22,7 @@ void TRACE_sd_task_destroy(SD_task_t task)
 
 void TRACE_sd_set_task_category(SD_task_t task, const char *category)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
   task->category = xbt_strdup (category);
 }
index c06d40a..7cdf66f 100644 (file)
@@ -5,6 +5,9 @@
   * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "instr/instr_private.h"
+#include <ctype.h>
+#include <wchar.h>
+
 
 #ifdef HAVE_TRACING
 
@@ -12,6 +15,59 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_smpi, instr, "Tracing SMPI");
 
 static xbt_dict_t keys;
 
+static const char *smpi_colors[] ={
+    "recv",     "255 000 000",
+    "irecv",    "255 135 135",
+    "send",     "000 000 255",
+    "isend",    "135 135 255",
+    "sendrecv", "000 255 255",
+    "wait",     "255 255 000",
+    "waitall",  "200 200 000",
+    "waitany",  "200 200 150",
+
+    "allgather",     "255 000 000",
+    "allgatherv",    "255 135 135",
+    "allreduce",     "255 000 255",
+    "alltoall",      "135 000 255",
+    "alltoallv",     "200 135 255",
+    "barrier",       "000 200 200",
+    "bcast",         "000 200 100",
+    "gather",        "255 255 000",
+    "gatherv",       "255 255 135",
+    "reduce",        "000 255 000",
+    "reducescatter", "135 255 135",
+    "scan",          "255 150 060",
+    "scatterv",      "135 000 135",
+    "scatter",       "255 190 140",
+
+    NULL, NULL,
+};
+
+static char *str_tolower (const char *str)
+{
+  char *ret = xbt_strdup (str);
+  int i, n = strlen (ret);
+  for (i = 0; i < n; i++)
+    ret[i] = tolower (str[i]);
+  return ret;
+}
+
+static const char *instr_find_color (const char *state)
+{
+  char *target = str_tolower (state);
+  const char *ret = NULL;
+  const char *current;
+  unsigned int i = 0;
+  while ((current = smpi_colors[i])){
+    if (strcmp (state, current) == 0){ ret = smpi_colors[i+1]; break; } //exact match
+    if (strstr(target, current)) { ret = smpi_colors[i+1]; break; }; //as substring
+    i+=2;
+  }
+  free (target);
+  return ret;
+}
+
+
 static char *smpi_container(int rank, char *container, int n)
 {
   snprintf(container, n, "rank-%d", rank);
@@ -87,8 +143,6 @@ void TRACE_smpi_alloc()
 
 void TRACE_smpi_start(void)
 {
-  if (!TRACE_smpi_is_enabled()) return;
-
   TRACE_start();
 }
 
@@ -135,7 +189,8 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation)
   smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
   container_t container = getContainer (str);
   type_t type = getType ("MPI_STATE", container->type);
-  val_t value = getValue (operation, "1 1 1", type);
+  const char *color = instr_find_color (operation);
+  val_t value = getValue (operation, color, type);
 
   new_pajePushState (SIMIX_get_clock(), container, type, value);
 }
@@ -156,11 +211,13 @@ void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation)
 {
   if (!TRACE_smpi_is_enabled()) return;
 
+
   char str[INSTR_DEFAULT_STR_SIZE];
   smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
   container_t container = getContainer (str);
   type_t type = getType ("MPI_STATE", container->type);
-  val_t value = getValue (operation, "1 1 1", type);
+  const char *color = instr_find_color (operation);
+  val_t value = getValue (operation, color, type);
 
   new_pajePushState (SIMIX_get_clock(), container, type, value);
 }
diff --git a/src/instr/instr_smx.c b/src/instr/instr_smx.c
deleted file mode 100644 (file)
index c9c0bb9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (c) 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
-  * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "instr/instr_private.h"
-
-#ifdef HAVE_TRACING
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_simix, instr, "Tracing Simix");
-
-void TRACE_smx_host_execute(smx_action_t act)
-{
-  if (!TRACE_is_active()) return;
-  return;
-}
-
-void TRACE_smx_action_communicate(smx_action_t act, smx_process_t proc)
-{
-  if (!TRACE_is_active()) return;
-  return;
-}
-
-void TRACE_smx_action_destroy(smx_action_t act)
-{
-  if (!TRACE_is_active()) return;
-  return;
-}
-
-#endif /* HAVE_TRACING */
index de520c9..73926c9 100644 (file)
@@ -24,7 +24,7 @@ void TRACE_surf_release(void)
 
 void TRACE_surf_host_set_power(double date, const char *resource, double power)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
 
   container_t container = getContainerByName(resource);
@@ -34,7 +34,7 @@ void TRACE_surf_host_set_power(double date, const char *resource, double power)
 
 void TRACE_surf_link_set_bandwidth(double date, const char *resource, double bandwidth)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
 
   container_t container = getContainerByName(resource);
@@ -45,7 +45,7 @@ void TRACE_surf_link_set_bandwidth(double date, const char *resource, double ban
 //FIXME: this function is not used (latency availability traces support exists in surf network models?)
 void TRACE_surf_link_set_latency(double date, const char *resource, double latency)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
 
   container_t container = getContainerByName(resource);
@@ -70,7 +70,7 @@ void TRACE_surf_gtnets_destroy(void *action)
 
 void TRACE_surf_action(surf_action_t surf_action, const char *category)
 {
-  if (!TRACE_is_active())
+  if (!TRACE_is_enabled())
     return;
   if (!TRACE_categorized ())
     return;
index cd5990b..3f015f1 100644 (file)
@@ -158,7 +158,7 @@ MSG_mailbox_put_with_timeout(msg_mailbox_t mailbox, m_task_t task,
   /* Try to send it by calling SIMIX network layer */
   TRY {
 #ifdef HAVE_TRACING
-    if (TRACE_is_active()) {
+    if (TRACE_is_enabled()) {
       comm = SIMIX_req_comm_isend(mailbox, t_simdata->message_size,
                                   t_simdata->rate, task, sizeof(void *),
                                   NULL, NULL, 0);
index 38a4b3d..94df936 100644 (file)
@@ -1255,8 +1255,7 @@ int dax__flex_debug = 0;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *dax_text;
-/* Validating XML processor for /home/mquinson/Code/simgrid/src/simdag/dax.dtd.
- * Generated 2010/12/01 17:15:43.
+/* Validating XML processor for src/simdag/dax.dtd.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index deaba20..de7b957 100644 (file)
@@ -1,5 +1,4 @@
 /* XML processor/application API for src/simdag/dax.dtd.
- * Generated 2010/12/01 17:15:43.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index fa9c138..7496336 100644 (file)
@@ -1,5 +1,4 @@
-/* Validating XML processor for /home/mquinson/Code/simgrid/src/simdag/dax.dtd.
- * Generated 2010/12/01 17:15:43.
+/* Validating XML processor for src/simdag/dax.dtd.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index c1d3e0c..29589b1 100644 (file)
@@ -209,10 +209,6 @@ smx_action_t SIMIX_host_execute(const char *name, smx_host_t host,
     surf_workstation_model->set_priority(action->execution.surf_exec, priority);
   }
 
-#ifdef HAVE_TRACING
-  TRACE_smx_host_execute(action);
-#endif
-
   XBT_DEBUG("Create execute action %p", action);
 
   return action;
@@ -267,9 +263,6 @@ void SIMIX_host_execution_destroy(smx_action_t action)
     action->execution.surf_exec = NULL;
   }
 
-#ifdef HAVE_TRACING
-  TRACE_smx_action_destroy(action);
-#endif
   xbt_mallocator_release(simix_global->action_mallocator, action);
 }
 
index eade575..d03fabb 100644 (file)
@@ -258,10 +258,6 @@ void SIMIX_comm_destroy(smx_action_t action)
     action->latency_limited = SIMIX_comm_is_latency_bounded( action ) ;
 #endif
 
-#ifdef HAVE_TRACING
-  TRACE_smx_action_destroy(action);
-#endif
-
   xbt_free(action->name);
   SIMIX_comm_destroy_internal_actions(action);
 
@@ -530,10 +526,6 @@ XBT_INLINE void SIMIX_comm_start(smx_action_t action)
 
     action->state = SIMIX_RUNNING;
 
-#ifdef HAVE_TRACING
-    TRACE_smx_action_communicate(action, action->comm.src_proc);
-#endif
-
     /* If a link is failed, detect it immediately */
     if (surf_workstation_model->action_state_get(action->comm.surf_comm) == SURF_ACTION_FAILED) {
       XBT_DEBUG("Communication from '%s' to '%s' failed to start because of a link failure",
index 2713127..bf5707b 100644 (file)
@@ -495,9 +495,6 @@ void SIMIX_process_sleep_destroy(smx_action_t action)
   XBT_DEBUG("Destroy action %p", action);
   if (action->sleep.surf_sleep)
     action->sleep.surf_sleep->model_type->action_unref(action->sleep.surf_sleep);
-#ifdef HAVE_TRACING
-  TRACE_smx_action_destroy(action);
-#endif
   xbt_mallocator_release(simix_global->action_mallocator, action);
 }
 
index aea4116..ec20d10 100755 (executable)
@@ -18,11 +18,16 @@ POWER="${DEFAULT_POWER}"
 
 SIMOPTS="--cfg=maxmin/precision:1e-9 --cfg=network/model:SMPI --cfg=TCP_gamma:4194304"
 
-
 #usage to print the way this script should be called
 function usage () {
     echo "usage:"
-    echo "$0 [-quiet] [-keep-temps] [-trace <tracefile>] [-np <numprocs>] -platform <xmldesc> -hostfile <hostfile> [-map] program [program-options]"
+    echo "$0 [-quiet] [-keep-temps]"
+    echo "      [-np <numprocs>] -platform <xmldesc> -hostfile <hostfile> [-map] program [program-options]"
+    echo "      [-trace]                  # activate tracing"
+    echo "      [-trace-grouped]          # group MPI processes by location"
+    echo "      [-trace-resource]         # trace resource utilization"
+    echo "      [-trace-triva]            # generate configuration for Triva's GraphView"
+    echo "      [-trace-file <tracefile>] # name of the tracefile (simgrid_smpi.trace)"
     echo "or (deprecated usage):"
     echo "$0 [-quiet] [-keep-temps] [-np <numprocs>] [-bandwidth <bytes/sec>] [-latency <secs>] program [program-options]"
     echo
@@ -35,7 +40,6 @@ then
     exit
 fi
 
-
 while true; do
   case "$1" in
    "-np" | "-n")
@@ -73,17 +77,27 @@ while true; do
    ;;
 
    "-trace")
-       TRACEOPT="$2"
-         shift 2
+       TRACE_ACTIVE="true"
+         shift 1
+   ;;
+
+   "-trace-file")
+      TRACE_FILENAME="$2"
+      shift 2
    ;;
 
    "-trace-grouped")
-    TRACE_GROUPED="true"
+      TRACE_GROUPED="true"
       shift 1
    ;;
 
-   "-triva")
-       TRIVA="true"
+   "-trace-resource")
+      TRACE_RESOURCE="true"
+      shift 1
+   ;;
+
+   "-trace-triva")
+       TRACE_TRIVA="true"
          shift 1
    ;;
 
@@ -229,19 +243,25 @@ APPLICATIONFOOT
 ##-------------------------------- end DEFAULT APPLICATION --------------------------------------
 
 ##---------------------- SMPI TRACING OPTIONS ---------------------------------
-  if [ -n "${TRACEOPT}" ]; then
-    TRACEOPTIONS="--cfg=tracing:1 --cfg=tracing/filename:${TRACEOPT} --cfg=tracing/smpi:1 --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1"
-  else
-    TRACEOPTIONS=""
+if [ -n "${TRACE_ACTIVE}" ]; then
+  #define trace filename
+  if [ -z "${TRACE_FILENAME}" ]; then
+    TRACE_FILENAME="smpi_simgrid.trace"
   fi
+  TRACEOPTIONS="--cfg=tracing:1 --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:1"
 
-  if [ -n "${TRIVA}" ]; then
-    TRACEOPTIONS="$TRACEOPTIONS --cfg=triva/categorized:smpi_cat.plist --cfg=triva/uncategorized:smpi_uncat.plist"
+  if [ -n "${TRACE_GROUPED}" ]; then
+    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:1"
   fi
 
-  if [ -n "${TRACE_GROUPED}" ]; then
-    TRACEOPTIONS="$TRACEOPTIONS --cfg=tracing/smpi/group:1"
+  if [ -n "${TRACE_RESOURCE}" ]; then
+    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1"
   fi
+
+  if [ -n "${TRACE_TRIVA}" ]; then
+    TRACEOPTIONS="${TRACEOPTIONS} --cfg=triva/categorized:smpi_cat.plist --cfg=triva/uncategorized:smpi_uncat.plist"
+  fi
+fi
 ##---------------------- end SMPI TRACING OPTIONS ---------------------------------
 
 export SMPI_GLOBAL_SIZE=${NUMPROCS}
index ee98eed..1a86a63 100644 (file)
@@ -201,7 +201,7 @@ static void cpu_update_actions_state(double now, double delta)
 
   xbt_swag_foreach_safe(action, next_action, running_actions) {
 #ifdef HAVE_TRACING
-    if (TRACE_is_active()) {
+    if (TRACE_is_enabled()) {
       cpu_Cas01_t x =
         lmm_constraint_id(lmm_get_cnst_from_var
                           (cpu_maxmin_system, action->variable, 0));
index 327469d..19f1743 100644 (file)
@@ -234,7 +234,7 @@ static void cpu_im_update_remains(cpu_Cas01_im_t cpu, double now)
                                           (action).variable) * (now -
                                                                 cpu->last_update));
 #ifdef HAVE_TRACING
-      if (TRACE_is_active()) {
+      if (TRACE_is_enabled()) {
         TRACE_surf_host_set_utilization(cpu->generic_resource.name,
                                         action->
                                         generic_lmm_action.generic_action.
@@ -327,7 +327,7 @@ static void cpu_im_update_actions_state(double now, double delta)
     GENERIC_ACTION(action).finish = surf_get_clock();
     /* set the remains to 0 due to precision problems when updating the remaining amount */
 #ifdef HAVE_TRACING
-    if (TRACE_is_active()) {
+    if (TRACE_is_enabled()) {
       cpu_Cas01_im_t cpu = ((cpu_Cas01_im_t)(action->cpu));
       TRACE_surf_host_set_utilization(cpu->generic_resource.name,
           action->generic_lmm_action.generic_action.data,
@@ -342,7 +342,7 @@ static void cpu_im_update_actions_state(double now, double delta)
     cpu_im_update_remains(action->cpu, surf_get_clock());
   }
 #ifdef HAVE_TRACING
-  if (TRACE_is_active()) {
+  if (TRACE_is_enabled()) {
     //defining the last timestamp that we can safely dump to trace file
     //without losing the event ascending order (considering all CPU's)
     void **data;
index b294a4c..c8649e1 100644 (file)
@@ -437,7 +437,7 @@ static void net_update_actions_state(double now, double delta)
                                    action->weight);
     }
 #ifdef HAVE_TRACING
-    if (TRACE_is_active()) {
+    if (TRACE_is_enabled()) {
       xbt_dynar_t route = global_routing->get_route(action->src_name,
                                                     action->dst_name);
       link_CM02_t link;
@@ -732,7 +732,7 @@ static surf_action_t net_communicate(const char *src_name,
   /* LARGE PLATFORMS HACK:
      expand also with src->link and dst->link */
 #ifdef HAVE_TRACING
-  if (TRACE_is_active()) {
+  if (TRACE_is_enabled()) {
     action->src_name = xbt_strdup(src_name);
     action->dst_name = xbt_strdup(dst_name);
   } else {
index 4ef677c..e8891fd 100644 (file)
@@ -298,7 +298,7 @@ static void update_actions_state(double now, double delta)
              action->generic_action.remains);
 
 #ifdef HAVE_TRACING
-      if (TRACE_is_active()) {
+      if (TRACE_is_enabled()) {
         double last_amount_sent = (action->generic_action.cost - action->last_remains);
         double amount_sent = (action->generic_action.cost - action->generic_action.remains);
 
@@ -378,7 +378,9 @@ static surf_action_t communicate(const char *src_name,
       surf_action_new(sizeof(s_surf_action_network_GTNETS_t), size,
                       surf_network_model, 0);
 
+#ifdef HAVE_TRACING
   action->last_remains = 0;
+#endif
 
   /* Add a flow to the GTNets Simulation, associated to this action */
   if (gtnets_create_flow(src, dst, size, (void *) action) < 0) {
index 38513f4..b5ba625 100644 (file)
@@ -781,7 +781,7 @@ static surf_action_t im_net_communicate(const char *src_name,
   /* LARGE PLATFORMS HACK:
      expand also with src->link and dst->link */
 #ifdef HAVE_TRACING
-  if (TRACE_is_active()) {
+  if (TRACE_is_enabled()) {
     action->src_name = xbt_strdup(src_name);
     action->dst_name = xbt_strdup(dst_name);
   } else {
index f5b828e..fda8136 100644 (file)
@@ -3161,7 +3161,6 @@ int surf_parse__flex_debug = 0;
 #define YY_RESTORE_YY_MORE_OFFSET
 char *surf_parse_text;
 /* Validating XML processor for src/surf/simgrid.dtd.
- * Generated 2011/04/11 09:38:38.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index cfdac24..4f07216 100644 (file)
@@ -1,5 +1,4 @@
 /* Validating XML processor for src/surf/simgrid.dtd.
- * Generated 2010/12/03 11:37:14.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
@@ -102,6 +101,8 @@ AT_surfxml_peer_lat AX_surfxml_peer_lat;
 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
+AT_surfxml_peer_availability_file AX_surfxml_peer_availability_file;
+#define A_surfxml_peer_availability_file (surfxml_bufferstack + AX_surfxml_peer_availability_file)
 AT_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction;
 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
 AT_surfxml_host_state AX_surfxml_host_state;
@@ -130,6 +131,8 @@ AT_surfxml_link_ctn_id AX_surfxml_link_ctn_id;
 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
 AT_surfxml_peer_bw_out AX_surfxml_peer_bw_out;
 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
+AT_surfxml_cluster_availability_file AX_surfxml_cluster_availability_file;
+#define A_surfxml_cluster_availability_file (surfxml_bufferstack + AX_surfxml_cluster_availability_file)
 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
@@ -156,6 +159,10 @@ AT_surfxml_link_latency AX_surfxml_link_latency;
 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
 AT_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind;
 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
+AT_surfxml_random_seed AX_surfxml_random_seed;
+#define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
+AT_surfxml_cluster_state_file AX_surfxml_cluster_state_file;
+#define A_surfxml_cluster_state_file (surfxml_bufferstack + AX_surfxml_cluster_state_file)
 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
@@ -180,10 +187,14 @@ AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
+AT_surfxml_peer_state_file AX_surfxml_peer_state_file;
+#define A_surfxml_peer_state_file (surfxml_bufferstack + AX_surfxml_peer_state_file)
 AT_surfxml_prop_value AX_surfxml_prop_value;
 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
+AT_surfxml_random_radical AX_surfxml_random_radical;
+#define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
 AT_surfxml_link_state_file AX_surfxml_link_state_file;
 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
 AT_surfxml_trace_connect_trace AX_surfxml_trace_connect_trace;
@@ -212,8 +223,6 @@ AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
 AT_surfxml_trace_id AX_surfxml_trace_id;
 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
-AT_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy;
-#define A_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy
 AT_surfxml_peer_power AX_surfxml_peer_power;
 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
@@ -224,6 +233,8 @@ AT_surfxml_bypassRoute_gw_src AX_surfxml_bypassRoute_gw_src;
 #define A_surfxml_bypassRoute_gw_src (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_src)
 AT_surfxml_cluster_core AX_surfxml_cluster_core;
 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
+AT_surfxml_include_file AX_surfxml_include_file;
+#define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
 AT_surfxml_host_state_file AX_surfxml_host_state_file;
@@ -395,7 +406,8 @@ Literal             \'[^'']*\'|\"[^""]*\"
  * IMPOSSIBLE  dummy to permit disabling rules; must be last
  */
 %x PROLOG DOCTYPE EPILOG INCOMMENT INPI VALUE1 VALUE2 CDATA
-%x ROOT_surfxml_platform AL_surfxml_platform S_surfxml_platform S_surfxml_platform_1 S_surfxml_platform_2 S_surfxml_platform_3 S_surfxml_platform_4 S_surfxml_platform_5 S_surfxml_platform_6 E_surfxml_platform
+%x ROOT_surfxml_platform AL_surfxml_platform S_surfxml_platform S_surfxml_platform_1 S_surfxml_platform_2 S_surfxml_platform_3 S_surfxml_platform_4 S_surfxml_platform_5 S_surfxml_platform_6 S_surfxml_platform_7 S_surfxml_platform_8 E_surfxml_platform
+%x AL_surfxml_include E_surfxml_include
 %x AL_surfxml_trace IN_trace
 %x AL_surfxml_random S_surfxml_random S_surfxml_random_1 S_surfxml_random_2 E_surfxml_random
 %x AL_surfxml_trace_connect E_surfxml_trace_connect
@@ -443,6 +455,7 @@ const char* *surfxml_statenames=NULL;
   /* FleXML_init */
   bnext = inext = 1;
   surfxml_bufferliteral('\0', &bnext, "0.0");
+  surfxml_bufferliteral('\0', &bnext, "2147483647");
   surfxml_bufferliteral('\0', &bnext, "1");
   surfxml_bufferliteral('\0', &bnext, "1.0");
   surfxml_bufferliteral('\0', &bnext, "1");
@@ -467,7 +480,11 @@ const char* *surfxml_statenames=NULL;
   surfxml_statenames[S_surfxml_platform_4] = "platform";
   surfxml_statenames[S_surfxml_platform_5] = "platform";
   surfxml_statenames[S_surfxml_platform_6] = "platform";
+  surfxml_statenames[S_surfxml_platform_7] = "platform";
+  surfxml_statenames[S_surfxml_platform_8] = "platform";
   surfxml_statenames[E_surfxml_platform] = "platform";
+  surfxml_statenames[AL_surfxml_include] = NULL;
+  surfxml_statenames[E_surfxml_include] = "include";
   surfxml_statenames[AL_surfxml_trace] = NULL;
   surfxml_statenames[IN_trace] = "trace";
   surfxml_statenames[AL_surfxml_random] = NULL;
@@ -544,7 +561,7 @@ const char* *surfxml_statenames=NULL;
 
  /* COMMENTS and PIs: handled uniformly for efficiency. */
 
-<ROOT_surfxml_platform,AL_surfxml_platform,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_platform_2,S_surfxml_platform_3,S_surfxml_platform_4,S_surfxml_platform_5,S_surfxml_platform_6,E_surfxml_platform,AL_surfxml_trace,IN_trace,AL_surfxml_random,S_surfxml_random,S_surfxml_random_1,S_surfxml_random_2,E_surfxml_random,AL_surfxml_trace_connect,E_surfxml_trace_connect,AL_surfxml_AS,S_surfxml_AS,S_surfxml_AS_1,S_surfxml_AS_2,S_surfxml_AS_3,S_surfxml_AS_4,S_surfxml_AS_5,S_surfxml_AS_6,S_surfxml_AS_7,S_surfxml_AS_8,S_surfxml_AS_9,S_surfxml_AS_10,S_surfxml_AS_11,S_surfxml_AS_12,S_surfxml_AS_13,E_surfxml_AS,AL_surfxml_host,S_surfxml_host,S_surfxml_host_1,S_surfxml_host_2,E_surfxml_host,AL_surfxml_cluster,E_surfxml_cluster,AL_surfxml_peer,E_surfxml_peer,AL_surfxml_router,E_surfxml_router,AL_surfxml_link,S_surfxml_link,S_surfxml_link_1,S_surfxml_link_2,E_surfxml_link,AL_surfxml_route,S_surfxml_route,S_surfxml_route_1,S_surfxml_route_2,E_surfxml_route,AL_surfxml_ASroute,S_surfxml_ASroute,S_surfxml_ASroute_1,S_surfxml_ASroute_2,E_surfxml_ASroute,AL_surfxml_link_ctn,E_surfxml_link_ctn,AL_surfxml_bypassRoute,S_surfxml_bypassRoute,S_surfxml_bypassRoute_1,S_surfxml_bypassRoute_2,E_surfxml_bypassRoute,AL_surfxml_process,S_surfxml_process,S_surfxml_process_1,S_surfxml_process_2,E_surfxml_process,AL_surfxml_argument,E_surfxml_argument,AL_surfxml_config,S_surfxml_config,S_surfxml_config_1,S_surfxml_config_2,E_surfxml_config,AL_surfxml_prop,E_surfxml_prop,PROLOG,DOCTYPE,EPILOG>{
+<ROOT_surfxml_platform,AL_surfxml_platform,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_platform_2,S_surfxml_platform_3,S_surfxml_platform_4,S_surfxml_platform_5,S_surfxml_platform_6,S_surfxml_platform_7,S_surfxml_platform_8,E_surfxml_platform,AL_surfxml_include,E_surfxml_include,AL_surfxml_trace,IN_trace,AL_surfxml_random,S_surfxml_random,S_surfxml_random_1,S_surfxml_random_2,E_surfxml_random,AL_surfxml_trace_connect,E_surfxml_trace_connect,AL_surfxml_AS,S_surfxml_AS,S_surfxml_AS_1,S_surfxml_AS_2,S_surfxml_AS_3,S_surfxml_AS_4,S_surfxml_AS_5,S_surfxml_AS_6,S_surfxml_AS_7,S_surfxml_AS_8,S_surfxml_AS_9,S_surfxml_AS_10,S_surfxml_AS_11,S_surfxml_AS_12,S_surfxml_AS_13,E_surfxml_AS,AL_surfxml_host,S_surfxml_host,S_surfxml_host_1,S_surfxml_host_2,E_surfxml_host,AL_surfxml_cluster,E_surfxml_cluster,AL_surfxml_peer,E_surfxml_peer,AL_surfxml_router,E_surfxml_router,AL_surfxml_link,S_surfxml_link,S_surfxml_link_1,S_surfxml_link_2,E_surfxml_link,AL_surfxml_route,S_surfxml_route,S_surfxml_route_1,S_surfxml_route_2,E_surfxml_route,AL_surfxml_ASroute,S_surfxml_ASroute,S_surfxml_ASroute_1,S_surfxml_ASroute_2,E_surfxml_ASroute,AL_surfxml_link_ctn,E_surfxml_link_ctn,AL_surfxml_bypassRoute,S_surfxml_bypassRoute,S_surfxml_bypassRoute_1,S_surfxml_bypassRoute_2,E_surfxml_bypassRoute,AL_surfxml_process,S_surfxml_process,S_surfxml_process_1,S_surfxml_process_2,E_surfxml_process,AL_surfxml_argument,E_surfxml_argument,AL_surfxml_config,S_surfxml_config,S_surfxml_config_1,S_surfxml_config_2,E_surfxml_config,AL_surfxml_prop,E_surfxml_prop,PROLOG,DOCTYPE,EPILOG>{
  "<!--" ENTER(INCOMMENT);
  "<?" ENTER(INPI);
 }
@@ -564,7 +581,7 @@ const char* *surfxml_statenames=NULL;
 
  /* SPACES: skipped uniformly */
 
-<ROOT_surfxml_platform,AL_surfxml_platform,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_platform_2,S_surfxml_platform_3,S_surfxml_platform_4,S_surfxml_platform_5,S_surfxml_platform_6,E_surfxml_platform,AL_surfxml_trace,AL_surfxml_random,S_surfxml_random,S_surfxml_random_1,S_surfxml_random_2,E_surfxml_random,AL_surfxml_trace_connect,E_surfxml_trace_connect,AL_surfxml_AS,S_surfxml_AS,S_surfxml_AS_1,S_surfxml_AS_2,S_surfxml_AS_3,S_surfxml_AS_4,S_surfxml_AS_5,S_surfxml_AS_6,S_surfxml_AS_7,S_surfxml_AS_8,S_surfxml_AS_9,S_surfxml_AS_10,S_surfxml_AS_11,S_surfxml_AS_12,S_surfxml_AS_13,E_surfxml_AS,AL_surfxml_host,S_surfxml_host,S_surfxml_host_1,S_surfxml_host_2,E_surfxml_host,AL_surfxml_cluster,E_surfxml_cluster,AL_surfxml_peer,E_surfxml_peer,AL_surfxml_router,E_surfxml_router,AL_surfxml_link,S_surfxml_link,S_surfxml_link_1,S_surfxml_link_2,E_surfxml_link,AL_surfxml_route,S_surfxml_route,S_surfxml_route_1,S_surfxml_route_2,E_surfxml_route,AL_surfxml_ASroute,S_surfxml_ASroute,S_surfxml_ASroute_1,S_surfxml_ASroute_2,E_surfxml_ASroute,AL_surfxml_link_ctn,E_surfxml_link_ctn,AL_surfxml_bypassRoute,S_surfxml_bypassRoute,S_surfxml_bypassRoute_1,S_surfxml_bypassRoute_2,E_surfxml_bypassRoute,AL_surfxml_process,S_surfxml_process,S_surfxml_process_1,S_surfxml_process_2,E_surfxml_process,AL_surfxml_argument,E_surfxml_argument,AL_surfxml_config,S_surfxml_config,S_surfxml_config_1,S_surfxml_config_2,E_surfxml_config,AL_surfxml_prop,E_surfxml_prop,PROLOG,DOCTYPE,EPILOG>{S} SKIP;
+<ROOT_surfxml_platform,AL_surfxml_platform,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_platform_2,S_surfxml_platform_3,S_surfxml_platform_4,S_surfxml_platform_5,S_surfxml_platform_6,S_surfxml_platform_7,S_surfxml_platform_8,E_surfxml_platform,AL_surfxml_include,E_surfxml_include,AL_surfxml_trace,AL_surfxml_random,S_surfxml_random,S_surfxml_random_1,S_surfxml_random_2,E_surfxml_random,AL_surfxml_trace_connect,E_surfxml_trace_connect,AL_surfxml_AS,S_surfxml_AS,S_surfxml_AS_1,S_surfxml_AS_2,S_surfxml_AS_3,S_surfxml_AS_4,S_surfxml_AS_5,S_surfxml_AS_6,S_surfxml_AS_7,S_surfxml_AS_8,S_surfxml_AS_9,S_surfxml_AS_10,S_surfxml_AS_11,S_surfxml_AS_12,S_surfxml_AS_13,E_surfxml_AS,AL_surfxml_host,S_surfxml_host,S_surfxml_host_1,S_surfxml_host_2,E_surfxml_host,AL_surfxml_cluster,E_surfxml_cluster,AL_surfxml_peer,E_surfxml_peer,AL_surfxml_router,E_surfxml_router,AL_surfxml_link,S_surfxml_link,S_surfxml_link_1,S_surfxml_link_2,E_surfxml_link,AL_surfxml_route,S_surfxml_route,S_surfxml_route_1,S_surfxml_route_2,E_surfxml_route,AL_surfxml_ASroute,S_surfxml_ASroute,S_surfxml_ASroute_1,S_surfxml_ASroute_2,E_surfxml_ASroute,AL_surfxml_link_ctn,E_surfxml_link_ctn,AL_surfxml_bypassRoute,S_surfxml_bypassRoute,S_surfxml_bypassRoute_1,S_surfxml_bypassRoute_2,E_surfxml_bypassRoute,AL_surfxml_process,S_surfxml_process,S_surfxml_process_1,S_surfxml_process_2,E_surfxml_process,AL_surfxml_argument,E_surfxml_argument,AL_surfxml_config,S_surfxml_config,S_surfxml_config_1,S_surfxml_config_2,E_surfxml_config,AL_surfxml_prop,E_surfxml_prop,PROLOG,DOCTYPE,EPILOG>{S} SKIP;
 
  /* PROLOG: determine root element and process it. */
 
@@ -574,7 +591,7 @@ const char* *surfxml_statenames=NULL;
 }
 
 <PROLOG,DOCTYPE>{
- "<!DOCTYPE"{S}"platform"{S}SYSTEM{S}("'simgrid.dtd'"|"\"simgrid.dtd\""){s}">" SET(ROOT_surfxml_platform);
+ "<!DOCTYPE"{S}"platform"{S}SYSTEM{S}("'http://simgrid.gforge.inria.fr/simgrid.dtd'"|"\"http://simgrid.gforge.inria.fr/simgrid.dtd\""){s}">" SET(ROOT_surfxml_platform);
  "<!"[^>-][^>]*">" FAIL("Bad declaration %s.",yytext);
  .             FAIL("Unexpected character `%c' in prolog.", yytext[0]);
  <<EOF>>       FAIL("EOF in prolog.");
@@ -584,7 +601,7 @@ const char* *surfxml_statenames=NULL;
 
  /* <!-- Small DTD for SURF based tools. -->  */
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_AS_6,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<platform"{s} FAIL("Starting tag <platform> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_AS_6,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<platform"{s} FAIL("Starting tag <platform> is not allowed here.");
 
 <ROOT_surfxml_platform>"<platform"{s} {
   AX_surfxml_platform_version = 1;
@@ -609,7 +626,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("EOF in attribute list of `platform' element.");
 }
 
-<S_surfxml_platform_2,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_platform_4,S_surfxml_platform_6,E_surfxml_platform>{
+<S_surfxml_platform_8,S_surfxml_platform_1,S_surfxml_platform_3,S_surfxml_platform,S_surfxml_platform_4,S_surfxml_platform_6,E_surfxml_platform>{
  "</platform"{s}">" {
   LEAVE;
   ETag_surfxml_platform();
@@ -623,9 +640,54 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</platform>' expected.");
 }
 
-<ROOT_surfxml_trace,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_config_1,S_surfxml_route,E_surfxml_bypassRoute>"<trace"{s} FAIL("Starting tag <trace> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,ROOT_surfxml_include,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<include"{s} FAIL("Starting tag <include> is not allowed here.");
 
-<S_surfxml_AS_12,S_surfxml_AS_1,S_surfxml_AS_9,S_surfxml_AS_11,S_surfxml_AS_2,S_surfxml_AS_5,S_surfxml_AS_10,S_surfxml_AS_13,S_surfxml_AS,S_surfxml_AS_8,S_surfxml_platform_4,S_surfxml_AS_4,S_surfxml_AS_7,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_6,S_surfxml_AS_3,S_surfxml_platform_3>"<trace"{s} {
+<S_surfxml_platform_5,S_surfxml_AS_2,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_platform_6,S_surfxml_platform_8,S_surfxml_AS_3,S_surfxml_platform_7,S_surfxml_AS,S_surfxml_platform_3,S_surfxml_platform_4>"<include"{s} {
+  AX_surfxml_include_file = 0;
+  ENTER(AL_surfxml_include); pushbuffer(0);
+  }
+
+<AL_surfxml_include>{
+ "file"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
+ "file"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
+
+ ">" {
+  if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
+  LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
+ }
+ "/>" {
+  if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
+  LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
+  switch (YY_START) {
+   case S_surfxml_AS_2: case S_surfxml_AS_3: case S_surfxml_AS: SET(S_surfxml_AS_3); break;
+   case S_surfxml_platform_5: SET(S_surfxml_platform_6); break;
+   case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_6: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_8); break;
+  }
+ }
+ .       FAIL("Unexpected character `%c' in attribute list of include element.", yytext[0]);
+ {Name} FAIL("Bad attribute `%s' in `include' element start tag.",yytext);
+ <<EOF>> FAIL("EOF in attribute list of `include' element.");
+}
+
+<E_surfxml_include>{
+ "</include"{s}">" {
+  LEAVE;
+  ETag_surfxml_include();
+  popbuffer(); /* attribute */
+  switch (YY_START) {
+   case S_surfxml_AS_2: case S_surfxml_AS_3: case S_surfxml_AS: SET(S_surfxml_AS_3); break;
+   case S_surfxml_platform_5: SET(S_surfxml_platform_6); break;
+   case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_6: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_8); break;
+  }
+ }
+ "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</include>' expected.",yytext);
+ .       FAIL("Unexpected character `%c': `</include>' expected.",yytext[0]);
+ <<EOF>> FAIL("Premature EOF: `</include>' expected.");
+}
+
+<ROOT_surfxml_trace,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_ASroute,S_surfxml_config_1,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<trace"{s} FAIL("Starting tag <trace> is not allowed here.");
+
+<S_surfxml_AS_12,S_surfxml_AS_1,S_surfxml_AS_9,S_surfxml_AS_11,S_surfxml_AS_2,S_surfxml_platform_6,S_surfxml_AS_5,S_surfxml_AS_10,S_surfxml_AS_13,S_surfxml_AS,S_surfxml_AS_8,S_surfxml_AS_4,S_surfxml_platform_5,S_surfxml_AS_7,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_6,S_surfxml_AS_3,S_surfxml_platform_3>"<trace"{s} {
   AX_surfxml_trace_id = 0;
   AX_surfxml_trace_file = 0;
   AX_surfxml_trace_periodicity = 0;
@@ -656,7 +718,7 @@ const char* *surfxml_statenames=NULL;
    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
   }
  }
@@ -677,7 +739,7 @@ const char* *surfxml_statenames=NULL;
    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
   }
  }
@@ -685,14 +747,16 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</trace>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,ROOT_surfxml_random,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<random"{s} FAIL("Starting tag <random> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,ROOT_surfxml_random,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<random"{s} FAIL("Starting tag <random> is not allowed here.");
 
-<S_surfxml_config>"<random"{s} {
+<S_surfxml_platform_2,S_surfxml_platform,S_surfxml_platform_3>"<random"{s} {
   AX_surfxml_random_id = 0;
   AX_surfxml_random_min = 0;
   AX_surfxml_random_max = 0;
   AX_surfxml_random_mean = 0;
   AX_surfxml_random_std_deviation = 0;
+  AX_surfxml_random_seed = 5;
+  AX_surfxml_random_radical = 0;
   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
   ENTER(AL_surfxml_random); pushbuffer(0);
   }
@@ -713,10 +777,20 @@ const char* *surfxml_statenames=NULL;
  "std_deviation"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
  "std_deviation"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
 
+ "seed"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
+ "seed"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
+
+ "radical"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
+ "radical"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
+
  "generator"{Eq}"'DRAND48'" |
  "generator"{Eq}"\"DRAND48\"" A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
  "generator"{Eq}"'RAND'" |
  "generator"{Eq}"\"RAND\"" A_surfxml_random_generator = A_surfxml_random_generator_RAND;
+ "generator"{Eq}"'RNGSTREAM'" |
+ "generator"{Eq}"\"RNGSTREAM\"" A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
+ "generator"{Eq}"'NONE'" |
+ "generator"{Eq}"\"NONE\"" A_surfxml_random_generator = A_surfxml_random_generator_NONE;
 
  ">" {
   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
@@ -734,7 +808,7 @@ const char* *surfxml_statenames=NULL;
   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_config: SET(E_surfxml_config); break;
+   case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of random element.", yytext[0]);
@@ -748,7 +822,7 @@ const char* *surfxml_statenames=NULL;
   ETag_surfxml_random();
   popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_config: SET(E_surfxml_config); break;
+   case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</random>' expected.",yytext);
@@ -756,9 +830,9 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</random>' expected.");
 }
 
-<S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,ROOT_surfxml_trace_connect,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_config_1,S_surfxml_route,E_surfxml_bypassRoute>"<trace_connect"{s} FAIL("Starting tag <trace_connect> is not allowed here.");
+<S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,ROOT_surfxml_trace_connect,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_ASroute,S_surfxml_config_1,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<trace_connect"{s} FAIL("Starting tag <trace_connect> is not allowed here.");
 
-<S_surfxml_AS_12,S_surfxml_AS_1,S_surfxml_AS_9,S_surfxml_AS_11,S_surfxml_AS_2,S_surfxml_AS_5,S_surfxml_AS_10,S_surfxml_AS_13,S_surfxml_AS,S_surfxml_AS_8,S_surfxml_platform_4,S_surfxml_AS_4,S_surfxml_AS_7,S_surfxml_platform_1,S_surfxml_AS_6,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<trace_connect"{s} {
+<S_surfxml_AS_12,S_surfxml_AS_1,S_surfxml_AS_9,S_surfxml_AS_11,S_surfxml_AS_2,S_surfxml_platform_6,S_surfxml_AS_5,S_surfxml_AS_10,S_surfxml_AS_13,S_surfxml_AS,S_surfxml_AS_8,S_surfxml_AS_4,S_surfxml_platform_5,S_surfxml_AS_7,S_surfxml_platform_1,S_surfxml_AS_6,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<trace_connect"{s} {
   AX_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
   AX_surfxml_trace_connect_trace = 0;
   AX_surfxml_trace_connect_element = 0;
@@ -797,7 +871,7 @@ const char* *surfxml_statenames=NULL;
    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
   }
  }
@@ -816,7 +890,7 @@ const char* *surfxml_statenames=NULL;
    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
   }
  }
@@ -825,9 +899,9 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</trace_connect>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,ROOT_surfxml_AS,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<AS"{s} FAIL("Starting tag <AS> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,ROOT_surfxml_AS,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<AS"{s} FAIL("Starting tag <AS> is not allowed here.");
 
-<S_surfxml_AS_2,S_surfxml_AS,S_surfxml_platform_4,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<AS"{s} {
+<S_surfxml_AS_2,S_surfxml_platform_6,S_surfxml_AS,S_surfxml_platform_5,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<AS"{s} {
   AX_surfxml_AS_id = 0;
   AX_surfxml_AS_routing = 0;
   ENTER(AL_surfxml_AS); pushbuffer(0);
@@ -851,7 +925,7 @@ const char* *surfxml_statenames=NULL;
   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of AS element.", yytext[0]);
@@ -866,7 +940,7 @@ const char* *surfxml_statenames=NULL;
   popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</AS>' expected.",yytext);
@@ -874,13 +948,13 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</AS>' expected.");
 }
 
-<S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,ROOT_surfxml_host,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<host"{s} FAIL("Starting tag <host> is not allowed here.");
+<S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,ROOT_surfxml_host,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<host"{s} FAIL("Starting tag <host> is not allowed here.");
 
 <S_surfxml_AS_11,S_surfxml_AS_10,S_surfxml_AS>"<host"{s} {
   AX_surfxml_host_id = 0;
   AX_surfxml_host_power = 0;
-  AX_surfxml_host_core = 5;
-  AX_surfxml_host_availability = 7;
+  AX_surfxml_host_core = 16;
+  AX_surfxml_host_availability = 18;
   AX_surfxml_host_availability_file = 0;
   AX_surfxml_host_state = A_surfxml_host_state_ON;
   AX_surfxml_host_state_file = 0;
@@ -947,21 +1021,23 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</host>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,ROOT_surfxml_cluster,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<cluster"{s} FAIL("Starting tag <cluster> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,ROOT_surfxml_cluster,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<cluster"{s} FAIL("Starting tag <cluster> is not allowed here.");
 
-<S_surfxml_AS_2,S_surfxml_AS,S_surfxml_platform_4,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<cluster"{s} {
+<S_surfxml_AS_2,S_surfxml_platform_6,S_surfxml_AS,S_surfxml_platform_5,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<cluster"{s} {
   AX_surfxml_cluster_id = 0;
   AX_surfxml_cluster_prefix = 0;
   AX_surfxml_cluster_suffix = 0;
   AX_surfxml_cluster_radical = 0;
   AX_surfxml_cluster_power = 0;
-  AX_surfxml_cluster_core = 11;
+  AX_surfxml_cluster_core = 22;
   AX_surfxml_cluster_bw = 0;
   AX_surfxml_cluster_lat = 0;
   AX_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
   AX_surfxml_cluster_bb_bw = 0;
   AX_surfxml_cluster_bb_lat = 0;
   AX_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
+  AX_surfxml_cluster_availability_file = 0;
+  AX_surfxml_cluster_state_file = 0;
   ENTER(AL_surfxml_cluster); pushbuffer(0);
   }
 
@@ -1008,6 +1084,12 @@ const char* *surfxml_statenames=NULL;
  "bb_sharing_policy"{Eq}"'FATPIPE'" |
  "bb_sharing_policy"{Eq}"\"FATPIPE\"" A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_FATPIPE;
 
+ "availability_file"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability_file);
+ "availability_file"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability_file);
+
+ "state_file"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state_file);
+ "state_file"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state_file);
+
  ">" {
   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
@@ -1033,7 +1115,7 @@ const char* *surfxml_statenames=NULL;
   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of cluster element.", yytext[0]);
@@ -1048,7 +1130,7 @@ const char* *surfxml_statenames=NULL;
   popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</cluster>' expected.",yytext);
@@ -1056,16 +1138,17 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</cluster>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,ROOT_surfxml_peer,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<peer"{s} FAIL("Starting tag <peer> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_AS_5,ROOT_surfxml_peer,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<peer"{s} FAIL("Starting tag <peer> is not allowed here.");
 
-<S_surfxml_AS_2,S_surfxml_AS,S_surfxml_platform_4,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<peer"{s} {
+<S_surfxml_AS_2,S_surfxml_platform_6,S_surfxml_AS,S_surfxml_platform_5,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_AS_3,S_surfxml_platform_3>"<peer"{s} {
   AX_surfxml_peer_id = 0;
   AX_surfxml_peer_power = 0;
   AX_surfxml_peer_bw_in = 0;
   AX_surfxml_peer_bw_out = 0;
   AX_surfxml_peer_lat = 0;
   AX_surfxml_peer_coordinates = 0;
-  AX_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
+  AX_surfxml_peer_availability_file = 0;
+  AX_surfxml_peer_state_file = 0;
   ENTER(AL_surfxml_peer); pushbuffer(0);
   }
 
@@ -1088,10 +1171,11 @@ const char* *surfxml_statenames=NULL;
  "coordinates"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
  "coordinates"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
 
- "sharing_policy"{Eq}"'SHARED'" |
- "sharing_policy"{Eq}"\"SHARED\"" A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_SHARED;
- "sharing_policy"{Eq}"'FULLDUPLEX'" |
- "sharing_policy"{Eq}"\"FULLDUPLEX\"" A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
+ "availability_file"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability_file);
+ "availability_file"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability_file);
+
+ "state_file"{Eq}\' ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state_file);
+ "state_file"{Eq}\" ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state_file);
 
  ">" {
   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
@@ -1110,7 +1194,7 @@ const char* *surfxml_statenames=NULL;
   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of peer element.", yytext[0]);
@@ -1125,7 +1209,7 @@ const char* *surfxml_statenames=NULL;
   popbuffer(); /* attribute */
   switch (YY_START) {
    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
-   case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_6); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</peer>' expected.",yytext);
@@ -1133,7 +1217,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</peer>' expected.");
 }
 
-<S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,ROOT_surfxml_router,E_surfxml_bypassRoute>"<router"{s} FAIL("Starting tag <router> is not allowed here.");
+<S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,ROOT_surfxml_router,S_surfxml_platform_7,E_surfxml_bypassRoute>"<router"{s} FAIL("Starting tag <router> is not allowed here.");
 
 <S_surfxml_AS_11,S_surfxml_AS_10,S_surfxml_AS>"<router"{s} {
   AX_surfxml_router_id = 0;
@@ -1178,13 +1262,13 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</router>' expected.");
 }
 
-<S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,ROOT_surfxml_link,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<link"{s} FAIL("Starting tag <link> is not allowed here.");
+<S_surfxml_random,S_surfxml_ASroute_1,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,ROOT_surfxml_link,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<link"{s} FAIL("Starting tag <link> is not allowed here.");
 
 <S_surfxml_AS_11,S_surfxml_AS_2,S_surfxml_AS_10,S_surfxml_AS,S_surfxml_AS_3>"<link"{s} {
   AX_surfxml_link_id = 0;
   AX_surfxml_link_bandwidth = 0;
   AX_surfxml_link_bandwidth_file = 0;
-  AX_surfxml_link_latency = 13;
+  AX_surfxml_link_latency = 24;
   AX_surfxml_link_latency_file = 0;
   AX_surfxml_link_state = A_surfxml_link_state_ON;
   AX_surfxml_link_state_file = 0;
@@ -1257,7 +1341,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</link>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,ROOT_surfxml_route,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<route"{s} FAIL("Starting tag <route> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_link_1,ROOT_surfxml_route,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<route"{s} FAIL("Starting tag <route> is not allowed here.");
 
 <S_surfxml_AS_12,S_surfxml_AS_9,S_surfxml_AS_11,S_surfxml_AS_13,S_surfxml_AS>"<route"{s} {
   AX_surfxml_route_src = 0;
@@ -1310,7 +1394,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</route>' expected.");
 }
 
-<S_surfxml_AS_10,ROOT_surfxml_ASroute,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<ASroute"{s} FAIL("Starting tag <ASroute> is not allowed here.");
+<S_surfxml_AS_10,ROOT_surfxml_ASroute,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<ASroute"{s} FAIL("Starting tag <ASroute> is not allowed here.");
 
 <S_surfxml_AS_1,S_surfxml_AS_5,S_surfxml_AS,S_surfxml_AS_6,S_surfxml_AS_3>"<ASroute"{s} {
   AX_surfxml_ASroute_src = 0;
@@ -1375,7 +1459,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</ASroute>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_link,E_surfxml_host,S_surfxml_config,ROOT_surfxml_link_ctn,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,E_surfxml_config,S_surfxml_host_1,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,E_surfxml_bypassRoute>"<link_ctn"{s} FAIL("Starting tag <link_ctn> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_link,E_surfxml_host,S_surfxml_config,ROOT_surfxml_link_ctn,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,E_surfxml_config,S_surfxml_host_1,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_platform_7,E_surfxml_bypassRoute>"<link_ctn"{s} FAIL("Starting tag <link_ctn> is not allowed here.");
 
 <S_surfxml_route_1,S_surfxml_bypassRoute,S_surfxml_route,S_surfxml_bypassRoute_2,S_surfxml_bypassRoute_1,S_surfxml_route_2,S_surfxml_ASroute,S_surfxml_ASroute_1,S_surfxml_ASroute_2>"<link_ctn"{s} {
   AX_surfxml_link_ctn_id = 0;
@@ -1428,7 +1512,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</link_ctn>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,ROOT_surfxml_bypassRoute,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_route,E_surfxml_bypassRoute>"<bypassRoute"{s} FAIL("Starting tag <bypassRoute> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,ROOT_surfxml_bypassRoute,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<bypassRoute"{s} FAIL("Starting tag <bypassRoute> is not allowed here.");
 
 <S_surfxml_AS_1,S_surfxml_AS,S_surfxml_AS_8,S_surfxml_AS_4,S_surfxml_AS_7,S_surfxml_AS_6,S_surfxml_AS_3>"<bypassRoute"{s} {
   AX_surfxml_bypassRoute_src = 0;
@@ -1487,13 +1571,13 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</bypassRoute>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,ROOT_surfxml_process,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<process"{s} FAIL("Starting tag <process> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_process_2,E_surfxml_ASroute,ROOT_surfxml_process,S_surfxml_AS_6,E_surfxml_link,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<process"{s} FAIL("Starting tag <process> is not allowed here.");
 
-<S_surfxml_platform_6,S_surfxml_platform_4,S_surfxml_platform_5,S_surfxml_platform_2,S_surfxml_platform_1,S_surfxml_platform>"<process"{s} {
+<S_surfxml_platform_6,S_surfxml_platform_4,S_surfxml_platform_1,S_surfxml_platform,S_surfxml_platform_8,S_surfxml_platform_7,S_surfxml_platform_3>"<process"{s} {
   AX_surfxml_process_host = 0;
   AX_surfxml_process_function = 0;
-  AX_surfxml_process_start_time = 17;
-  AX_surfxml_process_kill_time = 22;
+  AX_surfxml_process_start_time = 28;
+  AX_surfxml_process_kill_time = 33;
   ENTER(AL_surfxml_process); pushbuffer(0);
   }
 
@@ -1520,7 +1604,7 @@ const char* *surfxml_statenames=NULL;
   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: SET(S_surfxml_platform_8); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of process element.", yytext[0]);
@@ -1534,7 +1618,7 @@ const char* *surfxml_statenames=NULL;
   ETag_surfxml_process();
   popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
+   case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_8: case S_surfxml_platform_7: case S_surfxml_platform_3: SET(S_surfxml_platform_8); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</process>' expected.",yytext);
@@ -1542,7 +1626,7 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</process>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,ROOT_surfxml_argument,E_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<argument"{s} FAIL("Starting tag <argument> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,ROOT_surfxml_argument,E_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<argument"{s} FAIL("Starting tag <argument> is not allowed here.");
 
 <S_surfxml_process_1,S_surfxml_process,S_surfxml_process_2>"<argument"{s} {
   AX_surfxml_argument_value = 0;
@@ -1583,9 +1667,9 @@ const char* *surfxml_statenames=NULL;
  <<EOF>> FAIL("Premature EOF: `</argument>' expected.");
 }
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,ROOT_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_platform_2,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<config"{s} FAIL("Starting tag <config> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_random,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,S_surfxml_process,S_surfxml_link_2,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,S_surfxml_AS_9,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_link_1,S_surfxml_AS,S_surfxml_bypassRoute,S_surfxml_link,E_surfxml_host,S_surfxml_config,S_surfxml_ASroute_2,S_surfxml_random_2,S_surfxml_platform_6,S_surfxml_process_2,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_host_1,ROOT_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_config_2,S_surfxml_random_1,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_host,S_surfxml_process_1,S_surfxml_host_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_config_1,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<config"{s} FAIL("Starting tag <config> is not allowed here.");
 
-<S_surfxml_platform>"<config"{s} {
+<S_surfxml_platform_2,S_surfxml_platform,S_surfxml_platform_3>"<config"{s} {
   AX_surfxml_config_id = 0;
   ENTER(AL_surfxml_config); pushbuffer(0);
   }
@@ -1600,7 +1684,7 @@ const char* *surfxml_statenames=NULL;
  "/>" {
   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_platform: SET(S_surfxml_platform_1); break;
+   case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
   }
  }
  .       FAIL("Unexpected character `%c' in attribute list of config element.", yytext[0]);
@@ -1614,7 +1698,7 @@ const char* *surfxml_statenames=NULL;
   ETag_surfxml_config();
   popbuffer(); /* attribute */
   switch (YY_START) {
-   case S_surfxml_platform: SET(S_surfxml_platform_1); break;
+   case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
   }
  }
  "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</config>' expected.",yytext);
@@ -1625,7 +1709,7 @@ const char* *surfxml_statenames=NULL;
  /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
 
-<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,ROOT_surfxml_prop,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_AS,S_surfxml_bypassRoute,E_surfxml_host,S_surfxml_ASroute_2,S_surfxml_platform_6,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_platform_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_AS_4,S_surfxml_route,E_surfxml_bypassRoute>"<prop"{s} FAIL("Starting tag <prop> is not allowed here.");
+<S_surfxml_AS_10,S_surfxml_AS_3,S_surfxml_ASroute_1,S_surfxml_AS_2,E_surfxml_AS,S_surfxml_AS_12,E_surfxml_process,E_surfxml_random,S_surfxml_AS_8,S_surfxml_bypassRoute_2,E_surfxml_route,ROOT_surfxml_prop,S_surfxml_AS_9,S_surfxml_platform_3,S_surfxml_route_1,S_surfxml_AS_11,S_surfxml_AS,S_surfxml_bypassRoute,E_surfxml_host,S_surfxml_ASroute_2,S_surfxml_platform_6,E_surfxml_ASroute,S_surfxml_AS_6,E_surfxml_link,S_surfxml_platform,S_surfxml_platform_1,S_surfxml_bypassRoute_1,E_surfxml_config,S_surfxml_route_2,E_surfxml_platform,S_surfxml_platform_8,S_surfxml_platform_4,S_surfxml_AS_1,S_surfxml_platform_2,S_surfxml_AS_7,S_surfxml_AS_13,S_surfxml_ASroute,S_surfxml_platform_5,S_surfxml_AS_5,S_surfxml_AS_4,S_surfxml_route,S_surfxml_platform_7,E_surfxml_bypassRoute>"<prop"{s} FAIL("Starting tag <prop> is not allowed here.");
 
 <S_surfxml_config_1,S_surfxml_config,S_surfxml_random,S_surfxml_host_1,S_surfxml_host_2,S_surfxml_host,S_surfxml_link_1,S_surfxml_link_2,S_surfxml_config_2,S_surfxml_random_2,S_surfxml_link,S_surfxml_random_1,S_surfxml_process_1,S_surfxml_process,S_surfxml_process_2>"<prop"{s} {
   AX_surfxml_prop_id = 0;
index 42ca4d5..59d9895 100644 (file)
@@ -1054,7 +1054,6 @@ int xbt_graph_parse__flex_debug = 0;
 #define YY_RESTORE_YY_MORE_OFFSET
 char *xbt_graph_parse_text;
 /* Validating XML processor for src/xbt/graphxml.dtd.
- * Generated 2010/12/01 17:15:43.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index 2c880a0..d51f926 100644 (file)
@@ -1,5 +1,4 @@
 /* Validating XML processor for src/xbt/graphxml.dtd.
- * Generated 2010/12/01 17:15:43.
  *
  * This program was generated with the FleXML XML processor generator.
  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
index 2f1a887..72b8fce 100644 (file)
@@ -31,14 +31,14 @@ int main(int argc, char **argv)
   //creating the graph structure
   xbt_graph_t graph = TRACE_platform_graph();
   if (graph == NULL){
-    XBT_INFO ("%s expects --cfg=tracing:1", argv[0]);
+    XBT_INFO ("%s expects --cfg=tracing:1 --cfg=tracing/platform:1", argv[0]);
   }else{
     TRACE_platform_graph_export_graphviz (graph, graphvizFile);
     XBT_INFO ("Output is in file %s", graphvizFile);
   }
   MSG_clean();
 #else
-  XBT_INFO ("works only if simgrid has tracing enabled.");
+  XBT_INFO ("works only if simgrid was compiled with tracing enabled.");
 #endif
   return 0;
 }
index a78c3cd..8b9eacc 100644 (file)
@@ -1,7 +1,8 @@
 #! ./tesh
 
-$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:1 test.dot
+$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:1 --cfg=tracing/platform:1 test.dot
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
 > [0.000000] [graphicator/INFO] Output is in file test.dot