Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Also display the pid on backtraces
[simgrid.git] / doc / module-gras.doc
index 1e08192..2bf717e 100644 (file)
@@ -5,7 +5,7 @@
 /** \addtogroup GRAS_API
   
     \section GRAS_funct Offered functionnalities
-     - <b>Communication facilities</b>: Exchanging messages between peers
+     - <b>\ref GRAS_comm</b>: Exchanging messages between peers
        - \ref GRAS_dd : any data which may transit on the network must be
          described beforehand so that GRAS can handle the platform
          heterogeneity and convert them if needed.
@@ -17,7 +17,7 @@
        - \ref GRAS_timer : this is how to program repetitive and delayed
          tasks, not unlike cron(8) and at(1). This cannot be used to timeout
          a function (like setitimer(2) or signal(2) games could do).
-     - <b>Virtualization</b>: Running both on top of the simulator and on
+     - <b>\ref GRAS_run</b>: Running both on top of the simulator and on
        top of real platforms, and portability support.
        - \ref GRAS_virtu : You naturally don't want to call the
           gettimeofday(2) function in simulation mode since it would give
@@ -31,7 +31,7 @@
        - \ref GRAS_emul : Support to emulate code excution (ie, reporting
          execution time into the simulator and having code sections specific
          to simulation or to real mode).
-     - <b>Project management tools</b>: Here are some tools which may help
+     - <b>\ref GRAS_code</b>: Here are some tools which may help
           you setting up a GRAS project.\n
           Setting up and building a GRAS application is complicated by the
          library schizoid. The code to setup the environment differs
        - \ref GRAS_ex_ping
        - \ref GRAS_ex_mmrpc
        - \ref GRAS_ex_timer
-              
+
+    @{ */
+       /** @defgroup GRAS_comm    Communication facilities */
+       /** @defgroup GRAS_run     Virtualization */
+       /** @defgroup GRAS_code    Project and code management */
+       /** @defgroup GRAS_ex      Examples */
+/** @} */
+#####################################################################
+/** @addtogroup GRAS_comm
+
+   Here are the communication facilities. GRAS allows you to exchange
+   <i>messages</i> on <i>sockets</i> (which can be seen as pipes between
+   processes). On reception, messages start <i>callbacks</i> (that's the
+   default communication mode, not the only one). All messages of a given
+   type convey the same kind of data, and you have to describe it
+   beforehand.
+
+   Timers are also seen as a mean of communication (with yourself). It
+   allows you to run a repetitive task ("do this every N second until I tell
+   you to stop"), or to deffer a treatment ("do this in 3 sec").
+
     @{ */     
        /** @defgroup GRAS_dd      Data description      */       
        /** @defgroup GRAS_sock    Sockets               */           
        /** @defgroup GRAS_msg     Messages              */               
        /** @defgroup GRAS_timer   Timers                */               
+     
+/** @} */
+#####################################################################
+/** @addtogroup GRAS_run
+
+   Virtualization facilities allow your code to run both on top of the simulator or in real setting.
+
+    @{ */     
         
        /** @defgroup GRAS_globals Globals               */ 
        /** @defgroup GRAS_emul    Emulation support */ 
 
 /** @} */
 
+#####################################################################
+/** @addtogroup GRAS_code
+
+    Here is how to setup your code when you want to use GRAS. You will also
+    learn how to get the most repetitive parts of your code generated
+    automatically.
+
+    (use the tabs on top of the page to navigate)
+
+    \htmlonly <!-- 
+      DOXYGEN_NAVBAR_LABEL="Project management"
+      DOXYGEN_NAVBAR_CHILD "main() and GRAS"=GRAS_main_generation.html
+      DOXYGEN_NAVBAR_CHILD "Compiling your GRAS project"=GRAS_compile.html
+    --> \endhtmlonly
+*/
+
+#####################################################################
+/** @addtogroup GRAS_ex
+
+    There is for now rather few examples of GRAS, but it's better than
+    nothing, isn't it?
+
+       - \ref GRAS_ex_ping
+       - \ref GRAS_ex_mmrpc
+       - \ref GRAS_ex_timer
+
+    \htmlonly <!-- 
+      DOXYGEN_NAVBAR_CHILD "Ping-Pong"=GRAS_ex_ping.html
+      DOXYGEN_NAVBAR_CHILD "RPC"=GRAS_ex_mmrpc.html
+      DOXYGEN_NAVBAR_CHILD "Timers"=GRAS_ex_timer.html
+    --> \endhtmlonly
+
+  There is some more examples in the distribution, under the directory
+  <tt>examples/gras</tt>.
+*/
+
 #####################################################################
 #########################  EXTRA PAGES ##############################
 #####################################################################
 --------------------- main() generation -----------------------------
 ---------------------------------------------------------------------
 
-/** \page GRAS_main_generation main() and GRAS
-
-    <center>[\ref GRAS_API]</center>
+/** \page GRAS_main_generation main function
 
     \section GRAS_maingen_toc Table of content
      
 ------------------------- Compiling ---------------------------------
 ---------------------------------------------------------------------
 
-/** \page GRAS_compile Compiling your GRAS project
-
-    <center>[\ref GRAS_API]</center>
+/** \page GRAS_compile Compiling your project
 
     As explained in section \ref GRAS_main_generation, the
     gras_stub_generator tool can be used to generate the system
 
 /** \page GRAS_ex_ping The classical Ping-Pong in GRAS
 
-    <center>[\ref GRAS_API]</center>
-
     This example implements the very classical ping-pong in GRAS. It
     involves a client (initiating the ping-pong) and a server (answering to 
     client's requests).
 
 /** \page GRAS_ex_mmrpc A simple RPC for matrix multiplication
 
-    <center>[\ref GRAS_API]</center>
-
     This example implements a remote matrix multiplication. It involves a client 
     (creating the matrices and sending the multiplications requests) and a server 
     (computing the multiplication on client's behalf).
 
 /** \page GRAS_ex_timer Some timer games
 
-    <center>[\ref GRAS_API]</center>
-
     This example fools around with the GRAS timers (\ref GRAS_timer). It is
     mainly a regression test, since it uses almost all timer features.