Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Free MC memory on exit SVN
authorcristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 14 May 2010 12:41:57 +0000 (12:41 +0000)
committercristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 14 May 2010 12:41:57 +0000 (12:41 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7745 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/include/mc/mc.h
src/mc/mc_global.c
src/mc/private.h

index 1958c78..c87f017 100644 (file)
@@ -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);
index c80540a..db1ad4f 100644 (file)
@@ -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)
index 42b3000..972cf66 100644 (file)
@@ -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{