X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Ftracefile.c;h=cbb39d0e88cf1c38f9016833734f4f91f309e842;hb=a5ea8f1b4774e8c80ce8b0a5478a5fe8c4d46b07;hp=680bcc46d730a4f56dbfbb65b9067784dcbe5f16;hpb=f61f4dca50e13aa52b1ca3941c8f420848f4353f;p=lttv.git diff --git a/ltt/tracefile.c b/ltt/tracefile.c index 680bcc46..cbb39d0e 100644 --- a/ltt/tracefile.c +++ b/ltt/tracefile.c @@ -148,9 +148,9 @@ static int parse_trace_header(ltt_subbuffer_header_t *header, break; case 2: switch(header->minor_version) { - case 3: + case 4: { - struct ltt_subbuffer_header_2_3 *vheader = header; + struct ltt_subbuffer_header_2_4 *vheader = header; tf->buffer_header_size = ltt_subbuffer_header_size(); tf->tscbits = 27; tf->eventbits = 5; @@ -785,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; @@ -884,6 +885,8 @@ void ltt_tracefile_time_span_get(LttTracefile *tf, *end = ltt_time_zero; } else *end = tf->buffer.end.timestamp; + + g_assert(end->tv_sec <= G_MAXUINT); } struct tracefile_time_span_get_args { @@ -1384,22 +1387,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. */