who remember of Globus GOS anyway? And Operating System-like names
sound really strange now that the 21 century finally came.
\li <tt>sched.c</tt>: a C file including <tt>sched.h</tt> and
implementing the core of the scheduler. Most of these
functions use the MSG functions defined in section \ref
\li <tt>sched.c</tt>: a C file including <tt>sched.h</tt> and
implementing the core of the scheduler. Most of these
functions use the MSG functions defined in section \ref
\li <tt>masterslave.c</tt>: a C file with the main function, i.e.
the MSG initialization (MSG_global_init()), the platform
\li <tt>masterslave.c</tt>: a C file with the main function, i.e.
the MSG initialization (MSG_global_init()), the platform
the documentation provided in the relevant packages.
\section MSG_funct Offered functionnalities
the documentation provided in the relevant packages.
\section MSG_funct Offered functionnalities
- \ref m_process_management
- \ref m_datatypes_management
- \ref m_host_management
- \ref m_task_management
- \ref msg_file_management
- \ref m_process_management
- \ref m_datatypes_management
- \ref m_host_management
- \ref m_task_management
- \ref msg_file_management
- - \ref msg_gos_functions
- \ref msg_deprecated_functions
- \ref msg_deprecated_functions
Also make sure to visit the page @ref MSG_examples.
*/
Also make sure to visit the page @ref MSG_examples.
*/
/** @defgroup m_task_management Task Management Functions
* @ingroup MSG_API
* @brief This section describes the task structure of MSG
/** @defgroup m_task_management Task Management Functions
* @ingroup MSG_API
* @brief This section describes the task structure of MSG
- * (#m_task_t) and the functions for managing it.
+ * (#m_task_t) and the functions for managing it. See
+ * \ref msg_task_usage to see how to put the tasks in action.
+ *
+ * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Tasks" --> \endhtmlonly
- /** @defgroup msg_file_management File Management Functions
+/** @defgroup msg_task_usage Task Usage
+ * @ingroup MSG_API
+ * @brief This section describes the functions that can be used
+ * by a process to execute, communicate or otherwise handle some task.
+ */
+
+/** @defgroup msg_file_management File Management Functions
* @ingroup MSG_API
* @brief This section describes the file structure of MSG
* (#msg_file_t) and the functions for managing it. It
* is based on POSIX functions.
*/
* @ingroup MSG_API
* @brief This section describes the file structure of MSG
* (#msg_file_t) and the functions for managing it. It
* is based on POSIX functions.
*/
/**
@defgroup msg_trace_driven Trace-driven simulations
@ingroup MSG_API
/**
@defgroup msg_trace_driven Trace-driven simulations
@ingroup MSG_API
-/** @defgroup msg_gos_functions MSG Operating System Functions
- * @ingroup MSG_API
- * @brief This section describes the functions that can be used
- * by a process for handling some task.
- */
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_gos, msg,
"Logging specific to MSG (gos)");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_gos, msg,
"Logging specific to MSG (gos)");
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Executes a task and waits for its termination.
*
* This function is used for describing the behavior of a process. It
* \brief Executes a task and waits for its termination.
*
* This function is used for describing the behavior of a process. It
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Executes a parallel task and waits for its termination.
*
* \param task a #m_task_t to execute on the location on which the process is running.
* \brief Executes a parallel task and waits for its termination.
*
* \param task a #m_task_t to execute on the location on which the process is running.
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sleep for the specified number of seconds
*
* Makes the current process sleep until \a time seconds have elapsed.
* \brief Sleep for the specified number of seconds
*
* Makes the current process sleep until \a time seconds have elapsed.
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Receives a task from a mailbox from a specific host.
*
* This is a blocking function, the execution flow will be blocked
* \brief Receives a task from a mailbox from a specific host.
*
* This is a blocking function, the execution flow will be blocked
return MSG_task_receive_ext(task, alias, -1, host);
}
return MSG_task_receive_ext(task, alias, -1, host);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Receives a task from a mailbox.
*
* This is a blocking function, the execution flow will be blocked
* \brief Receives a task from a mailbox.
*
* This is a blocking function, the execution flow will be blocked
return MSG_task_receive_with_timeout(task, alias, -1);
}
return MSG_task_receive_with_timeout(task, alias, -1);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Receives a task from a mailbox with a given timeout.
*
* This is a blocking function with a timeout, the execution flow will be blocked
* \brief Receives a task from a mailbox with a given timeout.
*
* This is a blocking function with a timeout, the execution flow will be blocked
return MSG_task_receive_ext(task, alias, timeout, NULL);
}
return MSG_task_receive_ext(task, alias, timeout, NULL);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Receives a task from a mailbox from a specific host with a given timeout.
*
* This is a blocking function with a timeout, the execution flow will be blocked
* \brief Receives a task from a mailbox from a specific host with a given timeout.
*
* This is a blocking function with a timeout, the execution flow will be blocked
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task on a mailbox.
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
* \brief Sends a task on a mailbox.
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
return MSG_task_isend_with_matching(task,alias,NULL,NULL);
}
return MSG_task_isend_with_matching(task,alias,NULL,NULL);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task on a mailbox, with support for matching requests
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
* \brief Sends a task on a mailbox, with support for matching requests
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task on a mailbox.
*
* This is a non blocking detached send function.
* \brief Sends a task on a mailbox.
*
* This is a non blocking detached send function.
t_simdata->comm = comm;
}
t_simdata->comm = comm;
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Starts listening for receiving a task from an asynchronous communication.
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
* \brief Starts listening for receiving a task from an asynchronous communication.
*
* This is a non blocking function: use MSG_comm_wait() or MSG_comm_test()
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Checks whether a communication is done, and if yes, finalizes it.
* \param comm the communication to test
* \return TRUE if the communication is finished
* \brief Checks whether a communication is done, and if yes, finalizes it.
* \param comm the communication to test
* \return TRUE if the communication is finished
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief This function checks if a communication is finished.
* \param comms a vector of communications
* \return the position of the finished communication if any
* \brief This function checks if a communication is finished.
* \param comms a vector of communications
* \return the position of the finished communication if any
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Destroys a communication.
* \param comm the communication to destroy.
*/
* \brief Destroys a communication.
* \param comm the communication to destroy.
*/
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Wait for the completion of a communication.
*
* It takes two parameters.
* \brief Wait for the completion of a communication.
*
* It takes two parameters.
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief This function is called by a sender and permit to wait for each communication
*
* \param comm a vector of communication
* \brief This function is called by a sender and permit to wait for each communication
*
* \param comm a vector of communication
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief This function waits for the first communication finished in a list.
* \param comms a vector of communications
* \return the position of the first finished communication
* \brief This function waits for the first communication finished in a list.
* \param comms a vector of communications
* \return the position of the first finished communication
- * \ingroup msg_gos_functions
+ * \ingroup msg_task_usage
* \brief Returns the error (if any) that occured during a finished communication.
* \param comm a finished communication
* \return the status of the communication, or #MSG_OK if no error occured
* \brief Returns the error (if any) that occured during a finished communication.
* \param comm a finished communication
* \return the status of the communication, or #MSG_OK if no error occured
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Get a task (#m_task_t) from a communication
*
* \param comm the communication where to get the task
* \brief Get a task (#m_task_t) from a communication
*
* \param comm the communication where to get the task
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task to a mailbox
*
* This is a blocking function, the execution flow will be blocked
* \brief Sends a task to a mailbox
*
* This is a blocking function, the execution flow will be blocked
return MSG_task_send_with_timeout(task, alias, -1);
}
return MSG_task_send_with_timeout(task, alias, -1);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task to a mailbox with a maximum rate
*
* This is a blocking function, the execution flow will be blocked
* \brief Sends a task to a mailbox with a maximum rate
*
* This is a blocking function, the execution flow will be blocked
return MSG_task_send(task, alias);
}
return MSG_task_send(task, alias);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sends a task to a mailbox with a timeout
*
* This is a blocking function, the execution flow will be blocked
* \brief Sends a task to a mailbox with a timeout
*
* This is a blocking function, the execution flow will be blocked
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Check if there is a communication going on in a mailbox.
*
* \param alias the name of the mailbox to be considered
* \brief Check if there is a communication going on in a mailbox.
*
* \param alias the name of the mailbox to be considered
return !MSG_mailbox_is_empty(MSG_mailbox_get_by_alias(alias));
}
return !MSG_mailbox_is_empty(MSG_mailbox_get_by_alias(alias));
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Check the number of communication actions of a given host pending in a mailbox.
*
* \param alias the name of the mailbox to be considered
* \brief Check the number of communication actions of a given host pending in a mailbox.
*
* \param alias the name of the mailbox to be considered
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Look if there is a communication on a mailbox and return the
* PID of the sender process.
*
* \brief Look if there is a communication on a mailbox and return the
* PID of the sender process.
*
return MSG_process_get_PID(task->simdata->sender);
}
return MSG_process_get_PID(task->simdata->sender);
}
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
* \brief Sets the tracing category of a task.
*
* This function should be called after the creation of
* \brief Sets the tracing category of a task.
*
* This function should be called after the creation of
-/** \ingroup msg_gos_functions
+/** \ingroup msg_task_usage
*
* \brief Gets the current tracing category of a task.
*
*
* \brief Gets the current tracing category of a task.
*
in \ref m_host_management (only the read-only functions i.e. whose
name contains the word get), in \ref m_task_management (to create
or destroy some #m_task_t for example) and in \ref
in \ref m_host_management (only the read-only functions i.e. whose
name contains the word get), in \ref m_task_management (to create
or destroy some #m_task_t for example) and in \ref
- msg_gos_functions (to handle file transfers and task processing).
+ msg_task_usage (to handle file transfers and task processing).
* \param data a pointer to any data one may want to attach to the new
object. It is for user-level information and can be NULL. It can
be retrieved with the function \ref MSG_process_get_data.
* \param data a pointer to any data one may want to attach to the new
object. It is for user-level information and can be NULL. It can
be retrieved with the function \ref MSG_process_get_data.
in \ref m_host_management (only the read-only functions i.e. whose
name contains the word get), in \ref m_task_management (to create
or destroy some #m_task_t for example) and in \ref
in \ref m_host_management (only the read-only functions i.e. whose
name contains the word get), in \ref m_task_management (to create
or destroy some #m_task_t for example) and in \ref
- msg_gos_functions (to handle file transfers and task processing).
+ msg_task_usage (to handle file transfers and task processing).
* \param data a pointer to any data one may want to attach to the new
object. It is for user-level information and can be NULL. It can
be retrieved with the function \ref MSG_process_get_data.
* \param data a pointer to any data one may want to attach to the new
object. It is for user-level information and can be NULL. It can
be retrieved with the function \ref MSG_process_get_data.
#include "xbt/log.h"
/** @addtogroup m_task_management
#include "xbt/log.h"
/** @addtogroup m_task_management
- * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Tasks" --> \endhtmlonly
*
* Since most scheduling algorithms rely on a concept of task
* that can be either <em>computed</em> locally or
*
* Since most scheduling algorithms rely on a concept of task
* that can be either <em>computed</em> locally or