From 22660d9768d18207970fc465a03b8f333efafe1d Mon Sep 17 00:00:00 2001 From: Benjamin Poirier Date: Mon, 24 Aug 2009 09:23:47 -0400 Subject: [PATCH] Do not initialize times before the frequency has been read Do not calculate bogus begin and end values. Instead, skip that section of code until the trace header has been read. Signed-off-by: Benjamin Poirier --- ltt/tracefile.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/ltt/tracefile.c b/ltt/tracefile.c index 9cd13055..1b654551 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. */ -- 2.34.1