Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Revert "platform change impacts java too"
[simgrid.git] / examples / msg / README.doc
index ff47a2e..522000b 100644 (file)
@@ -2,11 +2,11 @@ This file follows the Doxygen syntax to be included in the
 documentation, but it should remain readable directly.
 
 /** 
- @defgroup MSG_examples MSG examples
+ @defgroup msg_examples MSG examples
  @ingroup MSG_API
  @brief Find the MSG example fitting your needs from the extensive set provided in the archive.
 
-  - @ref msg_ex_basic
+  - @ref msg_ex_basics
   - @ref msg_ex_async
   - @ref msg_ex_process
   - @ref msg_ex_tracing
@@ -18,7 +18,7 @@ documentation, but it should remain readable directly.
   - @ref msg_ex_apps
   - @ref msg_ex_misc
                    
-@section msg_ex_basic Basic examples and features
+@section msg_ex_basics Basic examples and features
 
  - <b>Ping Pong</b>: @ref examples/msg/app-pingpong/app-pingpong.c\n
    It's hard to think of a simpler example: it is just sending one
@@ -38,7 +38,7 @@ documentation, but it should remain readable directly.
    @ref examples/msg/app-masterworker/app-masterworker.c\n
    Another good old example, where one Master process has a bunch of
    task to dispatch to a set of several Worker processes. It is fully
-   commented in @ref MSG_ex_master_worker.
+   commented in @ref msg_ex_master_worker.
 
 @section msg_ex_async Asynchronous communications
 
@@ -60,13 +60,18 @@ shipped in the archive:
    until all activities in a given set have completed.
    
  - <b>Waiting for the first completed communication in a set</b>.
-   @ref examples/msg/async-waitall/async-waitany.c\n
+   @ref examples/msg/async-waitany/async-waitany.c\n
    The @ref MSG_comm_waitany function is useful when you want to block
    until one activity of the set completes, no matter which terminates
    first.
-
+   
 @section msg_ex_process Acting on Processes
 
+  - <b>Creating processes</b>. 
+    @ref examples/msg/process-create/process-create.c \n
+    Most processes are started from the deployment XML file, but they
+    can also be used with the @ref MSG_process_create() function.
+
   - <b>Suspend and Resume processes</b>.
     @ref examples/msg/process-suspend/process-suspend.c \n
     Processes can be suspended and resumed during their executions
@@ -80,23 +85,25 @@ shipped in the archive:
     @ref examples/msg/process-migration/process-migration.c \n
     Processes can move or be moved from a host to another with the @ref MSG_process_migrate function.
     
+  - <b>Yielding to other processes</b>.
+    @ref examples/msg/process-yield/process-yield.c\n
+    The @ref MSG_process_yield function interrupts the execution of the
+    current process, leaving a chance to run to the other processes
+    that are ready to run at the exact same timestamp
+
   - <b>Controling the process life cycle from the XML</b>.
     @ref examples/msg/process-startkilltime/process-startkilltime.c \n
     You can specify a start time and a kill time in the deployment
     file. See all *_d.xml files in this directory.
 
-TODO: add an example using @ref MSG_process_create()
-
 @section msg_ex_tracing Tracing and visualization features
 
 Tracing can be activated by various configuration options which
 are illustrated in these example. See also the 
 @ref tracing_tracing_options "full list of options related to tracing".
 
-  - <b>Basic example</b>. @ref examples/msg/trace-simple/trace-simple.c \n
-    In this very simple program, each process creates, executes,
-    and destroy a task. Recommanded options:
-    @verbatim --cfg=tracing:yes --cfg=tracing/uncategorized:yes @endverbatim
+It is interesting to run the process-create example with the following
+options to see the task executions:
 
   - <b>Platform tracing</b>.
     @ref examples/msg/trace-platform/trace-platform.c \n
@@ -132,7 +139,7 @@ are illustrated in these example. See also the
     @endverbatim     
 
 TODO: These tracing examples should be integrated in the examples to
-not dupplicate the C files. A full command line to see the result in
+not duplicate the C files. A full command line to see the result in
 the right tool (viva/vite/FrameSoc) should be given along with some
 screenshots.
 
@@ -143,34 +150,30 @@ the platform file. The following examples illustrate this feature.
 They have to be run with the following options:
 @verbatim --cfg=tracing:yes --cfg=tracing/platform:yes
 @endverbatim
+
   - <b>Attaching variables to Hosts</b>.
-    @ref examples/msg/trace-user-variables/trace-user-variables.c 
-  
+    @ref examples/msg/trace-host-user-variables/trace-host-user-variables.c 
+
   - <b>Attaching variables to Links</b>.
     @ref examples/msg/trace-link-user-variables/trace-link-user-variables.c \n
     The tricky part is that you have to know the name of the link you
     want to enhance with a variable.
-    
+
   - <b>Attaching variables to network Routes</b>
-    @ref examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables.c \n
+    @ref examples/msg/trace-route-user-variables/trace-route-user-variables.c \n
     It is often easier to update a given variable for all links of a
     given network path (identified by its source and destination
     hosts) instead of knowing the name of each specific link.
 
-TODO: rename trace-user-variables to trace-host-user-variables
-
-TODO: rename trace-link-srcdst-user-variables to trace-route-user-variables
-
 @section msg_ex_models Models-related examples
 
 @subsection msg_ex_ns3 NS3 as a SimGrid Network Model
 
 This example demonstrates how to use the bindings to the Network
-Simulator, as explained in @ref pls. The most
+Simulator, as explained in @ref pls_ns3. The most
 interesting is probably not the C files since they are unchanged from
 the other simulations, but the associated files, such as the platform
-file to see how to declare a platform to be used with the PLS bindings
+file to see how to declare a platform to be used with the ns-3 bindings
 of SimGrid and the tesh file to see how to actually start a simulation
 in these settings.
   
@@ -230,57 +233,62 @@ also the tesh files in the example directories for details.
 
 @section msg_ex_apps Examples of Full Applications
  
-  - <b>Parallel Matrix Multiplication</b>.
-    @ref examples/msg/app-pmm/app-pmm.c \n
-    This little application multiplies two matrices in parallel. Each
-    of the 9 processes computes a sub-block of the result, with the
-    sub-blocks of the input matrices exchanged between the processes. \n
-    This is a classical assignment in MPI lectures, here implemented
-    in MSG.
-
   - <b>Chord P2P protocol</b>.
     @ref examples/msg/dht-chord/dht-chord.c \n
     This example implements the well known Chord protocol,
     constituting a fully working non-trivial example. This 
     implementation is also very efficient, as demonstrated in 
     http://hal.inria.fr/inria-00602216/
-    
-  - @ref examples/msg/task-priority/task-priority.c \n
-  - @ref examples/msg/properties/properties.c \n
 
+@section msg_ex_misc Miscellaneous
+
+ - <b>Task priorities</b>.
+   @ref examples/msg/task-priority/task-priority.c \n
+   Demonstrates the use of @ref MSG_task_set_priority to change the
+   computation priority of  a given task.
+
+ - <b>User-defined properties</b>.
+   @ref examples/msg/platform-properties/platform-properties.c \n
+   Attaching arbitrary information to host, processes and
+   such, and retrieving them with @ref MSG_host_get_properties,
+   @ref MSG_host_get_property_value, @ref MSG_process_get_properties, and 
+   @ref MSG_process_get_property_value. Also make sure to read the
+   platform and deployment XML files to see how to declare these data.
+TODO: Document the many other examples that we have 
 */
 
 As a human, you can stop reading at this point. The rest is garbage:
 
 Every example must be listed in the following, but it's not possible
-to move this content upper as each @example directive seems to eat the
-next doxygen commands (and the content is placed at the top of the
-example file). 
+to move this content upper as each @example directive seems to eat
+everything until the next */ marker (and the content is placed at the
+top of the example file). 
 
 
 /**
-@defgroup MSG_ex_examples ignored
 @example examples/msg/app-pingpong/app-pingpong.c        
 @example examples/msg/app-token-ring/app-token-ring.c    
 @example examples/msg/app-masterworker/app-masterworker.c
 
 @example examples/msg/async-wait/async-wait.c
 @example examples/msg/async-waitall/async-waitall.c
-@example examples/msg/async-waitall/async-waitany.c
+@example examples/msg/async-waitany/async-waitany.c
+@example examples/msg/async-yield/async-yield.c
 
+@example examples/msg/process-create/process-create.c
 @example examples/msg/process-suspend/process-suspend.c
 @example examples/msg/process-kill/process-kill.c
 @example examples/msg/process-migration/process-migration.c
 @example examples/msg/process-startkilltime/process-startkilltime.c
 
-@example examples/msg/trace-simple/trace-simple.c
 @example examples/msg/trace-platform/trace-platform.c
 @example examples/msg/trace-categories/trace-categories.c
 @example examples/msg/trace-masterworker/trace-masterworker.c
 @example examples/msg/trace-process-migration/trace-process-migration.c
-@example examples/msg/trace-user-variables/trace-user-variables.c
+@example examples/msg/trace-host-user-variables/trace-host-user-variables.c
 @example examples/msg/trace-link-user-variables/trace-link-user-variables.c
-@example examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables.c
+@example examples/msg/trace-route-user-variables/trace-route-user-variables.c
 
 @example examples/msg/network-ns3/network-ns3.c
 
@@ -291,42 +299,10 @@ example file).
 @example examples/msg/actions-comm/actions-comm.c
 @example examples/msg/actions-storage/actions-storage.c
 
-@example examples/msg/app-pmm/app-pmm.c
-@example examples/msg/dht-chord
+@example examples/msg/dht-chord/dht-chord.c
 
 @example examples/msg/task-priority/task-priority.c
-@example examples/msg/properties/properties.c
+@example examples/msg/platform-properties/platform-properties.c
                         
 */
 
-Basic examples and features
-===========================
-
- * properties/msg_prop.c Attaching arbitrary information to host,
-   processes and such, and retrieving them with
-   MSG_host_get_properties(), MSG_host_get_property_value(),
-   MSG_process_get_properties() and MSG_process_get_property_value().
-   Also make sure to read the platform and deployment XML files to see
-   how to declare these data.
-
- * parallel_task/parallel_task.c: Demonstrates the use of
-   MSG_parallel_task_create(), to create special tasks that run on
-   several hosts at the same time. The resulting simulations are very
-   close to what can be achieved in SimDag, but still allows to use
-   the other features of MSG (it'd be cool to be able to mix
-   interfaces, but it's not possible ATM).
-
- * priority/priority.c: Demonstrates the use of
-   MSG_task_set_priority() to change the computation priority of a
-   given task.
-
-Examples of full applications
-=============================
-
- * chord/chord.c: Classical Chord P2P protocol This example implements
-   the well known Chord P2P protocol. Its main advantage is that it
-   constitute a fully working non-trivial example. In addition, its
-   implementation is rather efficient, as demonstrated in
-   [57]http://hal.inria.fr/inria-00602216/
-
-