Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] save/restore previous state when pause/resume tracing
authorschnorr <Lucas.Schnorr@imag.fr>
Fri, 21 Sep 2012 10:48:41 +0000 (12:48 +0200)
committerschnorr <Lucas.Schnorr@imag.fr>
Fri, 21 Sep 2012 10:48:41 +0000 (12:48 +0200)
src/instr/instr_config.c
src/instr/instr_interface.c

index 44b1f3f..3c37551 100644 (file)
@@ -634,16 +634,35 @@ void TRACE_generate_viva_cat_conf (void)
   generate_cat_configuration (TRACE_get_viva_cat_conf(), "viva", 0);
 }
 
+static int previous_trace_state = -1;
+
 void instr_pause_tracing (void)
 {
+  previous_trace_state = trace_enabled;
+  if (!TRACE_is_enabled()){
+    XBT_DEBUG ("Tracing is already paused, therefore do nothing.");
+  }else{
+    XBT_DEBUG ("Tracing is being paused.");
+  }
   trace_enabled = 0;
   XBT_DEBUG ("Tracing is paused.");
 }
 
 void instr_resume_tracing (void)
 {
-  trace_enabled = 1;
+  if (TRACE_is_enabled()){
+    XBT_DEBUG ("Tracing is already running while trying to resume, therefore do nothing.");
+  }else{
+    XBT_DEBUG ("Tracing is being resumed.");
+  }
+
+  if (previous_trace_state != -1){
+    trace_enabled = previous_trace_state;
+  }else{
+    trace_enabled = 1;
+  }
   XBT_DEBUG ("Tracing is resumed.");
+  previous_trace_state = -1;
 }
 
 #undef OPT_TRACING
index 5fffd02..bd07bf9 100644 (file)
@@ -991,12 +991,7 @@ xbt_dynar_t TRACE_get_edge_types (void)
  */
 void TRACE_pause (void)
 {
-  if (!TRACE_is_enabled()){
-    XBT_DEBUG ("Tracing is already paused, therefore do nothing.");
-  }else{
-    XBT_DEBUG ("Tracing is being paused.");
-    instr_pause_tracing();
-  }
+  instr_pause_tracing();
 }
 
 /** \ingroup TRACE_API
@@ -1005,12 +1000,7 @@ void TRACE_pause (void)
  */
 void TRACE_resume (void)
 {
-  if (TRACE_is_enabled()){
-    XBT_DEBUG ("Tracing is already running while trying to resume, therefore do nothing.");
-  }else{
-    XBT_DEBUG ("Tracing is being resumed.");
-    instr_resume_tracing();
-  }
+  instr_resume_tracing();
 }
 
 #endif /* HAVE_TRACING */