[ltt-dev] [PATCH] Do not initialize times before the frequency has been read

Mathieu Desnoyers compudj at krystal.dyndns.org
Wed Sep 30 23:30:30 EDT 2009


* Benjamin Poirier (benjamin.poirier at polymtl.ca) wrote:
> Do not calculate bogus begin and end values. Instead, skip that section of
> code until the trace header has been read.
> 

Will merge, thanks !

Mathieu

> Signed-off-by: Benjamin Poirier <benjamin.poirier at polymtl.ca>
> ---
> 
> This is an independant fix of the problem addressed in
> 04ad7785b5c1efc53fe5e71b8111a2793e923c6c "initialize fields of LttTrace to
> ensure deterministic behavior and that valgrid does not complain". The end
> result is the same but I think it makes a little more sense; merge it if you
> agree.
> 
>  ltt/tracefile.c |   24 +++++++++++-------------
>  1 files changed, 11 insertions(+), 13 deletions(-)
> 
> diff --git a/ltt/tracefile.c b/ltt/tracefile.c
> index 9cd1305..1b65455 100644
> --- a/ltt/tracefile.c
> +++ b/ltt/tracefile.c
> @@ -764,11 +764,6 @@ LttTrace *ltt_trace_open(const gchar *pathname)
>    get_absolute_pathname(pathname, abs_path);
>    t->pathname = g_quark_from_string(abs_path);
>  
> -  t->start_tsc = 0;
> -  t->freq_scale = 1;
> -  t->start_freq = 1;
> -  t->start_time_from_tsc = ltt_time_zero;
> -
>    g_datalist_init(&t->tracefiles);
>  
>    /* Test to see if it looks like a trace */
> @@ -790,6 +785,7 @@ LttTrace *ltt_trace_open(const gchar *pathname)
>    closedir(dir);
>    
>    /* Open all the tracefiles */
> +  t->start_freq= 0;
>    if(open_tracefiles(t, abs_path, "")) {
>      g_warning("Error opening tracefile %s", abs_path);
>      goto find_error;
> @@ -1389,22 +1385,24 @@ static gint map_block(LttTracefile * tf, guint block_num)
>  
>    tf->buffer.begin.cycle_count = ltt_get_uint64(LTT_GET_BO(tf),
>                                                &header->cycle_count_begin);
> -  tf->buffer.begin.freq = tf->trace->start_freq;
> -
> -  tf->buffer.begin.timestamp = ltt_interpolate_time_from_tsc(tf, 
> -                                          tf->buffer.begin.cycle_count);
>    tf->buffer.end.cycle_count = ltt_get_uint64(LTT_GET_BO(tf),
>                                                &header->cycle_count_end);
> -  tf->buffer.end.freq = tf->trace->start_freq;
> -  
>    tf->buffer.lost_size = ltt_get_uint32(LTT_GET_BO(tf),
>                                          &header->lost_size);
> -  tf->buffer.end.timestamp = ltt_interpolate_time_from_tsc(tf,
> -                                        tf->buffer.end.cycle_count);
>    tf->buffer.tsc =  tf->buffer.begin.cycle_count;
>    tf->event.tsc = tf->buffer.tsc;
>    tf->buffer.freq = tf->buffer.begin.freq;
>  
> +  if (tf->trace->start_freq)
> +  {
> +    tf->buffer.begin.freq = tf->trace->start_freq;
> +    tf->buffer.begin.timestamp = ltt_interpolate_time_from_tsc(tf,
> +      tf->buffer.begin.cycle_count);
> +    tf->buffer.end.freq = tf->trace->start_freq;
> +    tf->buffer.end.timestamp = ltt_interpolate_time_from_tsc(tf,
> +      tf->buffer.end.cycle_count);
> +  }
> +
>    /* FIXME
>     * eventually support variable buffer size : will need a partial pre-read of
>     * the headers to create an index when we open the trace... eventually. */
> -- 
> 1.6.3.3
> 
> 
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68




More information about the lttng-dev mailing list