- LttTime time;
-
- if(tsc > tf->trace->start_tsc) {
- time = ltt_time_from_uint64(
- (double)(tsc - tf->trace->start_tsc)
- * 1000000000.0 * tf->trace->freq_scale
- / (double)tf->trace->start_freq);
- time = ltt_time_add(tf->trace->start_time_from_tsc, time);
- } else {
- time = ltt_time_from_uint64(
- (double)(tf->trace->start_tsc - tsc)
- * 1000000000.0 * tf->trace->freq_scale
- / (double)tf->trace->start_freq);
- time = ltt_time_sub(tf->trace->start_time_from_tsc, time);
- }
- return time;
+ return ltt_time_from_uint64(tsc_to_uint64(tf->trace->freq_scale,
+ tf->trace->start_freq, tf->trace->drift * tsc +
+ tf->trace->offset));