Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Now, a process can be killed and all process are killed at the end of the simulation.
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 26 Jan 2005 17:23:48 +0000 (17:23 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 26 Jan 2005 17:23:48 +0000 (17:23 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@769 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/msg/msg.h
src/msg/global.c
src/msg/m_process.c

index b431910..45c2a3b 100644 (file)
@@ -46,6 +46,7 @@ m_process_t MSG_process_create(const char *name,
 m_process_t MSG_process_create_with_arguments(const char *name,
                                              m_process_code_t code, void *data,
                                              m_host_t host, int argc, char **argv);
 m_process_t MSG_process_create_with_arguments(const char *name,
                                              m_process_code_t code, void *data,
                                              m_host_t host, int argc, char **argv);
+void MSG_process_free(m_process_t process);
 MSG_error_t MSG_get_arguments(int *argc, char ***argv);
 MSG_error_t MSG_set_arguments(m_process_t process,int argc, char *argv[]);
 
 MSG_error_t MSG_get_arguments(int *argc, char ***argv);
 MSG_error_t MSG_set_arguments(m_process_t process,int argc, char *argv[]);
 
index ac62493..1889843 100644 (file)
@@ -299,7 +299,12 @@ MSG_error_t MSG_clean(void)
 {
   xbt_fifo_item_t i = NULL;
   m_host_t h = NULL;
 {
   xbt_fifo_item_t i = NULL;
   m_host_t h = NULL;
+  m_process_t p = NULL;
 
 
+
+  while((p=xbt_fifo_shift(msg_global->process_list))) {
+    MSG_process_free(p);
+  }
   xbt_context_exit();
 
   xbt_fifo_foreach(msg_global->host,i,h,m_host_t) {
   xbt_context_exit();
 
   xbt_fifo_foreach(msg_global->host,i,h,m_host_t) {
index af8e813..924f80d 100644 (file)
@@ -51,7 +51,6 @@ static void MSG_process_cleanup(void *arg)
   xbt_free(arg);
 }
 
   xbt_free(arg);
 }
 
-
 m_process_t MSG_process_create_with_arguments(const char *name,
                                              m_process_code_t code, void *data,
                                              m_host_t host, int argc, char **argv)
 m_process_t MSG_process_create_with_arguments(const char *name,
                                              m_process_code_t code, void *data,
                                              m_host_t host, int argc, char **argv)
@@ -99,6 +98,13 @@ m_process_t MSG_process_create_with_arguments(const char *name,
   return process;
 }
 
   return process;
 }
 
+void MSG_process_free(m_process_t process)
+{
+  xbt_fifo_remove(msg_global->process_list,process);
+  xbt_context_free(process->simdata->context);
+  MSG_process_cleanup(process);
+}
+
 /** \ingroup m_process_management
  * \brief Migrates an agent to another location.
  *
 /** \ingroup m_process_management
  * \brief Migrates an agent to another location.
  *