Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Importing the documentation !!! :)
[simgrid.git] / src / modules.doc
diff --git a/src/modules.doc b/src/modules.doc
new file mode 100644 (file)
index 0000000..0f2bbae
--- /dev/null
@@ -0,0 +1,138 @@
+/** \defgroup SimGrid_API  API of SimGrid */
+
+/** \defgroup XBT_API      API of the toolbox (FIFO, hashtables, macros...) 
+    \ingroup SimGrid_API
+*/
+    /** \defgroup XBT_context User-level context library
+     *  \ingroup XBT_API
+     *  \brief This section describes how to use high-level functions 
+     *  (as opposed to <c>setjump/longjmp</c>) to schedule non-preemptible 
+     *  threads.
+     */
+    /** \defgroup XBT_dict A generic dictionnary
+     *  \ingroup XBT_API
+     *  \brief This section describes the API to a dictionnary structure that 
+     *  associates as string to a void* key. It is not a hash table and the 
+     *  internal data-structure rather looks like a tree.
+     */
+    /** \defgroup XBT_dynar A generic dynamic array
+     *  \ingroup XBT_API
+     *  \brief This section describes the API to generic dynamic array (vector).
+     */
+    /** \defgroup XBT_error Error tracking support.
+     *  \ingroup XBT_API
+     *  \brief This section describes a set of macros used to handle errors easily.
+     */
+    /** \defgroup XBT_fifo A generic workqueue
+     *  \ingroup XBT_API
+     *  \brief This section describes the API to generic workqueue. These functions
+     *   provide the same kind of functionnality as dynamic arrays but in time O(1). 
+     *   However these functions use malloc/free a way too much often.
+     */
+    /** \defgroup XBT_swag A specific set datatype
+     *  \ingroup XBT_API
+     *  \brief Warning, this module is done to be efficient and performs tons of
+     *  cast and dirty things. So avoid using it unless you really know
+     *  what you are doing. It is basically a fifo but with restrictions so that 
+     *  it can be used as a set. Any operation (add, remove, belongs) is O(1) and 
+     *  no call to malloc/free is done.
+     */
+    /** \defgroup XBT_heap A generic heap data structure
+     *  \ingroup XBT_API
+     *  \brief This section describes the API to generic heap.
+     */
+    /** \defgroup XBT_log A generic logging facility in the spirit of log4j
+     *  \ingroup XBT_API
+     *  \brief This section describes the API to the log functions used 
+     *  everywhere in this project.
+     */
+    /** \defgroup XBT_sysdep All system dependency
+     *  \ingroup XBT_API
+     *  \brief This section describes many macros/functions that can serve as
+     *  an OS abstraction.
+     */
+
+
+/** \defgroup SURF_API       API of SURF
+ *  \ingroup SimGrid_API
+ */
+
+
+/** \defgroup MSG_API      API of MSG 
+ *  \ingroup SimGrid_API
+ */
+    /** \defgroup m_datatypes_management MSG Data Types
+     *  \ingroup MSG_API
+     *  \brief This section describes the different datatypes provided by MSG.
+     *
+     */
+
+    /** \defgroup m_process_management Management Functions of Agents
+     *  \ingroup MSG_API
+     *  \brief This section describes the agent structure of MSG
+     *  (#m_process_t) and the functions for managing it.
+     *
+     *  We need to simulate many independent scheduling decisions, so
+     *  the concept of <em>process</em> is at the heart of the
+     *  simulator. A process may be defined as a <em>code</em>, with
+     *  some <em>private data</em>, executing in a <em>location</em>.
+     *  \see m_process_t
+     */
+
+    /** \defgroup m_host_management    Management Functions of Hosts
+     *  \ingroup MSG_API
+     *  \brief This section describes the host structure of MSG
+     * (#m_host_t) and the functions for managing it.
+     *  
+     *  A <em>location</em> (or <em>host</em>) is any possible place where
+     *  a process may run. Thus it may be represented as a
+     *  <em>physical resource with computing capabilities</em>, some
+     *  <em>mailboxes</em> to enable running process to communicate with
+     *  remote ones, and some <em>private data</em> that can be only
+     *  accessed by local process.
+     *  \see m_host_t
+     */
+
+    /** \defgroup m_task_management    Management Functions of Tasks
+     *  \ingroup MSG_API
+     *  \brief This section describes the task structure of MSG
+     *  (#m_task_t) and the functions for managing it.
+     *
+     *  Since most scheduling algorithms rely on a concept of task
+     *  that can be either <em>computed</em> locally or
+     *  <em>transferred</em> on another processor, it seems to be the
+     *  right level of abstraction for our purposes. A <em>task</em>
+     *  may then be defined by a <em>computing amount</em>, a
+     *  <em>message size</em> and some <em>private data</em>.
+     */
+
+    /** \defgroup msg_gos_functions    MSG Operating System Functions
+     *  \ingroup MSG_API
+     *  \brief This section describes the functions that can be used
+     *  by an agent for handling some task.
+     */
+
+    /** \defgroup m_channel_management    Understanding channels
+     *  \ingroup MSG_API
+     *  \brief This section briefly describes the channel notion of MSG
+     *  (#m_channel_t).
+     *
+     *  For convenience, the simulator provides the notion of channel
+     *  that is close to the tag notion in MPI. A channel is not a
+     *  socket. It doesn't need to be opened neither closed. It rather
+     *  corresponds to the ports opened on the different machines.
+     */
+
+    /** \defgroup msg_easier_life      Platform and Application management
+     *  \ingroup MSG_API
+     *  \brief This section describes functions to manage the platform creation
+     *  and the application deployment. You should also have a look at 
+     *  \ref MSG_examples  to have an overview of their usage.
+     */
+
+    /** \defgroup msg_simulation       MSG simulation Functions
+     *  \ingroup MSG_API
+     *  \brief This section describes the functions you need to know to
+     *  set up a simulation. You should have a look at \ref MSG_examples 
+     *  to have an overview of their usage.
+     */