From 3d12836da9798f96c230170b4c284cc34a322185 Mon Sep 17 00:00:00 2001 From: cristianrosa Date: Fri, 14 May 2010 12:41:57 +0000 Subject: [PATCH] Free MC memory on exit git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7745 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/mc/mc.h | 1 + src/mc/mc_global.c | 32 +++++++++++++++++++++++++++++++- src/mc/private.h | 4 ++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/include/mc/mc.h b/src/include/mc/mc.h index 1958c782e5..c87f0173d0 100644 --- a/src/include/mc/mc.h +++ b/src/include/mc/mc.h @@ -20,6 +20,7 @@ SG_BEGIN_DECL() /********************************* Global *************************************/ XBT_PUBLIC(void) MC_init(int); +XBT_PUBLIC(void) MC_exit(int); XBT_PUBLIC(void) MC_assert(int); XBT_PUBLIC(void) MC_modelcheck(int); XBT_PUBLIC(int) MC_random(int,int); diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index c80540a192..db1ad4f4a5 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -55,7 +55,8 @@ void MC_init(int method) MC_UNSET_RAW_MEM; } -void MC_modelcheck(int method){ +void MC_modelcheck(int method) +{ MC_init(method); @@ -69,6 +70,35 @@ void MC_modelcheck(int method){ default: break; } + + MC_exit(method); +} + +void MC_exit(int method) +{ + mc_state_t state; + + switch(method){ + case 0: + //MC_dfs_exit(); + break; + case 1: + //MC_dpor_exit(); + break; + default: + break; + } + + /* Destroy MC data structures (in RAW memory) */ + MC_SET_RAW_MEM; + xbt_free(mc_stats); + + while( (state = (mc_state_t)xbt_fifo_pop(mc_stack)) != NULL ) + MC_state_delete(state); + + xbt_fifo_free(mc_stack); + xbt_setset_destroy(mc_setset); + MC_UNSET_RAW_MEM; } int MC_random(int min, int max) diff --git a/src/mc/private.h b/src/mc/private.h index 42b30001e9..972cf66004 100644 --- a/src/mc/private.h +++ b/src/mc/private.h @@ -61,6 +61,10 @@ void MC_dfs_init(void); void MC_dpor_init(void); void MC_dfs(void); void MC_dpor(void); +void MC_dfs_exit(void); +void MC_dpor_exit(void); + + /******************************* Transitions **********************************/ typedef struct s_mc_transition{ -- 2.20.1