Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Trace buffer is not to be handled by the format-dependent init functions
authorAugustin Degomme <degomme@idpann.imag.fr>
Tue, 5 Nov 2013 18:05:11 +0000 (19:05 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Wed, 6 Nov 2013 14:13:57 +0000 (15:13 +0100)
(cherry picked from commit 8ec4cdb61b9430ccbbb5f07e48d46039aa72609f)

src/instr/instr_TI_trace.c
src/instr/instr_config.c
src/instr/instr_paje_trace.c
src/instr/instr_private.h
src/instr/instr_trace.c

index 6fd798f..5846c77 100644 (file)
@@ -19,7 +19,6 @@ double prefix=0.0;
 xbt_dict_t tracing_files = NULL;
 
 extern s_instr_trace_writer_t active_writer;
-extern xbt_dynar_t buffer;
 
 void TRACE_TI_init(void)
 {
@@ -45,7 +44,6 @@ void TRACE_TI_start(void)
   /* output comment file */
   dump_comment_file(TRACE_get_comment_file());
 
-  buffer = xbt_dynar_new(sizeof(paje_event_t), NULL);
 }
 
 void TRACE_TI_end(void)
@@ -53,7 +51,6 @@ void TRACE_TI_end(void)
   if(tracing_files)xbt_dict_free(&tracing_files);
   fclose(tracing_file);
   char *filename = TRACE_get_filename();
-  xbt_dynar_free(&buffer);
   XBT_DEBUG("Filename %s is closed", filename);
 }
 
index 50886f9..6300219 100644 (file)
@@ -104,7 +104,8 @@ int TRACE_start()
     XBT_DEBUG("Tracing starts");
 
     /* init the tracing module to generate the right output */
-    /* open the trace file */
+    /* open internal buffer */
+    TRACE_init();
 
     /* open the trace file(s) */
     const char* format = sg_cfg_get_string(OPT_TRACING_FORMAT);
@@ -198,6 +199,8 @@ int TRACE_end()
     }else{
       xbt_die("Unknown trace format :%s ", format);
     }
+    /* close internal buffer */
+    TRACE_finalize();
     /* de-activate trace */
     trace_active = 0;
     XBT_DEBUG("Tracing is off");
index 91bfb95..46603c6 100644 (file)
@@ -11,7 +11,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr_trace, "tracing event sy
 
 extern FILE * tracing_file;
 extern s_instr_trace_writer_t active_writer;
-extern xbt_dynar_t buffer;
 
 
 void TRACE_paje_init(void)
@@ -65,14 +64,12 @@ void TRACE_paje_start(void)
   /* output header */
   TRACE_header(TRACE_basic(),TRACE_display_sizes());
 
-  buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
 }
 
 void TRACE_paje_end(void)
 {
   fclose(tracing_file);
   char *filename = TRACE_get_filename();
-  xbt_dynar_free (&buffer);
   XBT_DEBUG("Filename %s is closed", filename);
 }
 
index cfa1613..2c0fc4b 100644 (file)
@@ -234,6 +234,8 @@ extern double TRACE_last_timestamp_to_dump;
 void TRACE_header(int basic, int size);
 
 /* from paje.c */
+void TRACE_init(void);
+void TRACE_finalize(void);
 void TRACE_paje_init(void);
 void TRACE_paje_start(void);
 void TRACE_paje_end(void);
index 02de93a..e37756a 100644 (file)
@@ -59,8 +59,13 @@ void dump_comment_file (const char *filename)
   fclose(file);
 }
 
+void TRACE_init(){
+   buffer = xbt_dynar_new(sizeof(paje_event_t), NULL);
+}
 
-
+void TRACE_finalize(){
+  if (buffer) xbt_dynar_free(&buffer);
+}
 
 double TRACE_last_timestamp_to_dump = 0;
 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
@@ -101,6 +106,7 @@ static void insert_into_buffer (paje_event_t tbi)
     tbi->free (tbi);
     return;
   }
+
   XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
       __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));