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 9255ae05fde3cbd5ce7e78919214926a5278314c..13376715980ccf81358a32a74535ada4ff3e40b7 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 08049553dc9334b1ebee4255d6fe42aa6c8cdd00..5865d11cfe4f9e3e91fb2d8f9a8912a90e1cafb1 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 5061dd902a10c2e997b52fa195873098b04f7f66..9174abb7acd0143500000df5642a06825fa506fb 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 8375a45ac338cb665b652c26c609fb627fd8950a..d65e466aa9579e5afbb35b81547ee40d0f3b4245 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 3aaaaae2f59834fdea438ed22e66b38606bd1d47..d1fa7396a6ce0929b42acd74ea8a6d7629f9bb7d 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 f1452ca0e4d2a324b648b7288748d3a520b83bfd..0c24cd0e5508f0b4cd8ef73d94642e0c7002c6f8 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 dd73b3f4663f5ad98ecb614acc5b90c4b848c0da..37b8f99d87174977b4ed53839c6075150ba9801a 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 83a4b194f6ca62285197f3f5e7f11be98710e531..6ad066577c0887a601185cc5955c734e519f31f9 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 a22466b3caf4772a4c789cdc5e0e35575fd956f1..abcd93b17abb5988f0b1d86d0cf0c0a11b1c00b4 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 baaac6e07a72df405ca5cf461733bb9459fbb89c..bb1633efc71b9f88276b4ceaa09191eda0bbacc0 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 df314b9e69db5264087af5b44ff5c3fe9cb246b7..75c4f20aa7f74b3effae25ebb29584f8a27fe298 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 e94d1983a2f19a0f0e335162352d620f77831f28..1c97865db8b2b9455ff0a033e9275a6d64a19f1e 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 0027e25d19df98bbf2775541ee830145edfba6af..4ebfde4cd39b281459b95b9240195d142484dcbb 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 48ef5febac9199228c73f988dd71f8ead067b155..556b0c0ec104c7c953b5165031e1571ad99ba5e5 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 da77f222fd7ad1aaa83d6658827f4d39431c3bae..1bd308f42c390c29575e93f79b11fd5c932aa725 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 df4d0261519c8f5645d45b41ddf779d206856606..12966a6ccbeaa97f3d67b7507021db76ceeb741d 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 924ae904fe6769017ff9b8d50dc00af690d22ccb..b75039ea12c80aceec13c2920dd9c022f028c35d 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 cd144719bd82dcf0a36138739c0eb743a763a66a..a8060aa9d15fa041bd4f79884980c14813a1ec6b 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 e83f003c30cabc8d5e1f4ebc02dc24d18b2d2057..c6960bcff85f3c89d202668ceb51c68ab250bf0a 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 a6b588502bc64d460e4ea71cd08404d07871890b..ba5c51b50377bf9bf9c93592750cb098fd1a04fb 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 6ee93c3b84ce1bd75bc57f573e9b7fd75f2003f5..01e4a1ba360f15ceb956b88f2b1db3fbbf3b97a5 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 dc7c556029e79054f6f26c414f27236863c8ec38..067b95441059378a8c61c95b2c5b28fdf8225fcc 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 c06d40ad80630039e4e9da46b626b99b97f8d52a..7cdf66f0f104f50a2f13f618a14b9d82e8c05928 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 de520c91123dfe487e386952273f196f61a99c11..73926c9050583ab19b179a18a5f39163585b3492 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 cd5990b3cb2cc76919466765bc171806c8060c3e..3f015f1e244c4b9a7c176aab0bf8516518f1f58b 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 38a4b3d07f818b4408a1231371611c9f0ed28184..94df9368b55ff63db776f44baafc36c525dc978b 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 deaba20490a1fbf5b5d8a9d3da5d217c74f8ef12..de7b9574b94389dc2a1bb0d2e9cd36ebe7023370 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 fa9c1389ea7c8dfd4ad428a268c20d78b90fa2ff..7496336ca907a536cfd4a50c8fa066826221f270 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 c1d3e0ccd54000080c8f4e098012d74c9a06c594..29589b1f4d7cd74133551be2907edba28a8108ae 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 eade5755b347ef45f7af95946f7fea752cc94e83..d03fabbd0c8b384e27656ab32b46ba96ac0f6a0e 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 27131278223b95f813cbf651158584c23925333f..bf5707b098b314231bf8d42bbfd890e0b6bef018 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 aea4116b554f7049eac33a42aa5798dc02084b5d..ec20d10f9fa398de470eaeaf32795432f0eeda4d 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 ee98eed906d19620b8b9e20110a887c156c9686e..1a86a63c3f198bb2070834b64810effb203c81ab 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 327469dd0a46f41e9e7f185a77b64d9a604d4d11..19f1743728f6167ed0872397c6bbe426a35e892e 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 b294a4c9a7ceb361f660a76c4f3c27ea1aeb45a3..c8649e155e259bf60680391defeabc2ae6349cb5 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 4ef677c339df5b9e4865e397d8392ee3e73454ba..e8891fdbb27f5c698f414986aee7c8d180b56602 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 38513f4e6f1539f564e361fac815ec5faf126993..b5ba6253f131dafaf624277ffcb5101c5b65965e 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 f5b828e220380d00f992685ec4742e6b7b8b95eb..fda8136ba25580d5298c2f25272d46b53f23a6ae 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 cfdac2468c33f1e687a74b921b23a69ed0af8010..4f07216e3dcc3a9e1d65a64342743a003b881129 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 42ca4d595d242f3b1ae6e0319d83b03b2af06659..59d9895d55dcba3310ca6ed229957c034a8fe242 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 2c880a00e78ee5f2aba19d41e046ccf8dceb3307..d51f92681eebe1a384411dca637e7fe6419ecea1 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 2f1a8878b8e98f4f0b46faede1f4f6d08139f55e..72b8fceb5b3c85e172cb9061b3ea2195beff5ff5 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 a78c3cdef7ce287cf475f2132c8b77d9c4d608e2..8b9eacc02f351e0f756a39cc0f08e1815befdbe2 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