From 5c856ab29791883f3ca4f8d526bac816cb08546d Mon Sep 17 00:00:00 2001 From: alegrand Date: Wed, 26 Jan 2005 17:23:48 +0000 Subject: [PATCH] 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 --- include/msg/msg.h | 1 + src/msg/global.c | 5 +++++ src/msg/m_process.c | 8 +++++++- 3 files changed, 13 insertions(+), 1 deletion(-) 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. * -- 2.20.1