[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