From: alegrand Date: Wed, 26 Jan 2005 17:23:48 +0000 (+0000) Subject: Now, a process can be killed and all process are killed at the end of the simulation. X-Git-Tag: v3.3~4581 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5c856ab29791883f3ca4f8d526bac816cb08546d?hp=79adfdb539deedcac38651c4f8c9b0a8767beb23 Now, a process can be killed and all process are killed at the end of the simulation. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@769 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/include/msg/msg.h b/include/msg/msg.h index b431910000..45c2a3b0f8 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -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); +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[]); diff --git a/src/msg/global.c b/src/msg/global.c index ac62493559..1889843a9f 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -299,7 +299,12 @@ MSG_error_t MSG_clean(void) { 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) { diff --git a/src/msg/m_process.c b/src/msg/m_process.c index af8e8132ed..924f80db5b 100644 --- a/src/msg/m_process.c +++ b/src/msg/m_process.c @@ -51,7 +51,6 @@ static void MSG_process_cleanup(void *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) @@ -99,6 +98,13 @@ m_process_t MSG_process_create_with_arguments(const char *name, 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. *