Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'v3_9_x'
[simgrid.git] / src / msg / msg_process.c
index f279dab..cf7ce52 100644 (file)
@@ -45,7 +45,6 @@ void MSG_process_cleanup_from_SIMIX(smx_process_t smx_proc)
 #ifdef HAVE_TRACING
   TRACE_msg_process_end(smx_proc);
 #endif
-
   // free the data if a function was provided
   if (msg_proc->data && msg_global->process_data_cleanup) {
     msg_global->process_data_cleanup(msg_proc->data);
@@ -67,7 +66,7 @@ void MSG_process_create_from_SIMIX(smx_process_t* process, const char *name,
                                     const char *hostname, double kill_time, int argc, char **argv,
                                     xbt_dict_t properties, int auto_restart)
 {
-  m_host_t host = MSG_get_host_by_name(hostname);
+  msg_host_t host = MSG_get_host_by_name(hostname);
   msg_process_t p = MSG_process_create_with_environment(name, code, data,
                                                       host, argc, argv,
                                                       properties);
@@ -87,7 +86,7 @@ void MSG_process_create_from_SIMIX(smx_process_t* process, const char *name,
  */
 msg_process_t MSG_process_create(const char *name,
                                xbt_main_func_t code, void *data,
-                               m_host_t host)
+                               msg_host_t host)
 {
   return MSG_process_create_with_environment(name, code, data, host, -1,
                                              NULL, NULL);
@@ -106,7 +105,7 @@ msg_process_t MSG_process_create(const char *name,
    m_process_management (to create a new #msg_process_t for example),
    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
+   or destroy some #msg_task_t for example) and in \ref
    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
@@ -120,7 +119,7 @@ msg_process_t MSG_process_create(const char *name,
 
 msg_process_t MSG_process_create_with_arguments(const char *name,
                                               xbt_main_func_t code,
-                                              void *data, m_host_t host,
+                                              void *data, msg_host_t host,
                                               int argc, char **argv)
 {
   return MSG_process_create_with_environment(name, code, data, host,
@@ -140,7 +139,7 @@ msg_process_t MSG_process_create_with_arguments(const char *name,
    m_process_management (to create a new #msg_process_t for example),
    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
+   or destroy some #msg_task_t for example) and in \ref
    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
@@ -154,7 +153,7 @@ msg_process_t MSG_process_create_with_arguments(const char *name,
  */
 msg_process_t MSG_process_create_with_environment(const char *name,
                                                 xbt_main_func_t code,
-                                                void *data, m_host_t host,
+                                                void *data, msg_host_t host,
                                                 int argc, char **argv,
                                                 xbt_dict_t properties)
 {
@@ -180,10 +179,10 @@ msg_process_t MSG_process_create_with_environment(const char *name,
 
 #ifdef HAVE_TRACING
   TRACE_msg_process_create(name, simdata->PID, simdata->m_host);
-  #endif
+#endif
   /* Let's create the process: SIMIX may decide to start it right now,
    * even before returning the flow control to us */
 simcall_process_create(&process, name, code, simdata, SIMIX_host_get_name(host->smx_host), -1,
simcall_process_create(&process, name, code, simdata, sg_host_name(host), -1,
                            argc, argv, properties,0);
 
   if (!process) {
@@ -222,17 +221,17 @@ void MSG_process_kill(msg_process_t process)
  * \brief Migrates a process to another location.
  *
  * This function checks whether \a process and \a host are valid pointers
-   and change the value of the #m_host_t on which \a process is running.
+   and change the value of the #msg_host_t on which \a process is running.
  */
-MSG_error_t MSG_process_migrate(msg_process_t process, m_host_t host)
+msg_error_t MSG_process_migrate(msg_process_t process, msg_host_t host)
 {
   simdata_process_t simdata = simcall_process_get_data(process);
   simdata->m_host = host;
 #ifdef HAVE_TRACING
-  m_host_t now = simdata->m_host;
+  msg_host_t now = simdata->m_host;
   TRACE_msg_process_change_host(process, now, host);
 #endif
-  simcall_process_change_host(process, host->smx_host);
+  simcall_process_change_host(process, host);
   return MSG_OK;
 }
 
@@ -257,7 +256,7 @@ void* MSG_process_get_data(msg_process_t process)
  * This function checks whether \a process is a valid pointer or not
    and sets the user data associated to this process.
  */
-MSG_error_t MSG_process_set_data(msg_process_t process, void *data)
+msg_error_t MSG_process_set_data(msg_process_t process, void *data)
 {
   xbt_assert(process != NULL, "Invalid parameter");
 
@@ -281,10 +280,10 @@ XBT_PUBLIC(void) MSG_process_set_data_cleanup(void_f_pvoid_t data_cleanup) {
 /** \ingroup m_process_management
  * \brief Return the location on which a process is running.
  * \param process a process (NULL means the current one)
- * \return the m_host_t corresponding to the location on which \a
+ * \return the msg_host_t corresponding to the location on which \a
  * process is running.
  */
-m_host_t MSG_process_get_host(msg_process_t process)
+msg_host_t MSG_process_get_host(msg_process_t process)
 {
   simdata_process_t simdata;
   if (process == NULL) {
@@ -313,6 +312,12 @@ msg_process_t MSG_process_from_PID(int PID)
 xbt_dynar_t MSG_processes_as_dynar(void) {
   return SIMIX_processes_as_dynar();
 }
+/** @brief Return the current number MSG processes.
+ */
+int MSG_process_get_number(void)
+{
+  return SIMIX_process_count();
+}
 
 /** \ingroup m_process_management
  * \brief Set the kill time of a process.
@@ -320,7 +325,7 @@ xbt_dynar_t MSG_processes_as_dynar(void) {
  * \param process a process
  * \param kill_time the time when the process is killed.
  */
-MSG_error_t MSG_process_set_kill_time(msg_process_t process, double kill_time)
+msg_error_t MSG_process_set_kill_time(msg_process_t process, double kill_time)
 {
   simcall_process_set_kill_time(process,kill_time);
   return MSG_OK;
@@ -437,7 +442,7 @@ msg_process_t MSG_process_self(void)
  * This function suspends the process by suspending the task on which
  * it was waiting for the completion.
  */
-MSG_error_t MSG_process_suspend(msg_process_t process)
+msg_error_t MSG_process_suspend(msg_process_t process)
 {
   xbt_assert(process != NULL, "Invalid parameter");
 
@@ -455,7 +460,7 @@ MSG_error_t MSG_process_suspend(msg_process_t process)
  * This function resumes a suspended process by resuming the task on
  * which it was waiting for the completion.
  */
-MSG_error_t MSG_process_resume(msg_process_t process)
+msg_error_t MSG_process_resume(msg_process_t process)
 {
   xbt_assert(process != NULL, "Invalid parameter");
 
@@ -500,3 +505,10 @@ void MSG_process_on_exit(int_f_pvoid_t fun, void *data) {
 XBT_PUBLIC(void) MSG_process_auto_restart_set(msg_process_t process, int auto_restart) {
   simcall_process_auto_restart_set(process,auto_restart);
 }
+/*
+ * \ingroup m_process_management
+ * \brief Restarts a process from the beginning.
+ */
+XBT_PUBLIC(msg_process_t) MSG_process_restart(msg_process_t process) {
+  return simcall_process_restart(process);
+}