From b75818ac32c18c4a2c6d5a28dd3da7f2ca19a5c1 Mon Sep 17 00:00:00 2001 From: schnorr Date: Fri, 21 Sep 2012 12:48:41 +0200 Subject: [PATCH] [trace] save/restore previous state when pause/resume tracing --- src/instr/instr_config.c | 21 ++++++++++++++++++++- src/instr/instr_interface.c | 14 ++------------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/instr/instr_config.c b/src/instr/instr_config.c index 44b1f3fdb9..3c37551979 100644 --- a/src/instr/instr_config.c +++ b/src/instr/instr_config.c @@ -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 diff --git a/src/instr/instr_interface.c b/src/instr/instr_interface.c index 5fffd02af8..bd07bf9f49 100644 --- a/src/instr/instr_interface.c +++ b/src/instr/instr_interface.c @@ -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 */ -- 2.20.1