#ifndef LTT_H
#define LTT_H
+#include <ltt/time.h>
#include <ltt/LTTTypes.h>
/* A trace is associated with a tracing session run on a single, possibly
/* Events are usually stored with the easily obtained CPU clock cycle count,
- ltt_cycle_count. This can be converted to the real time value, ltt_time,
+ ltt_cycle_count. This can be converted to the real time value, LttTime,
using linear interpolation between regularly sampled values (e.g. a few
times per second) of the real time clock with their corresponding
cycle count values. */
-typedef struct _LttTime {
- unsigned long tv_sec;
- unsigned long tv_nsec;
-} LttTime;
+
+typedef struct _TimeInterval{
+ LttTime startTime;
+ LttTime endTime;
+} TimeInterval;
+
typedef uint64_t LttCycleCount;
+
/* Event positions are used to seek within a tracefile based on
the block number and event position within the block. */
{ LTT_LITTLE_ENDIAN, LTT_BIG_ENDIAN
} LttArchEndian;
-/* Time operation macros for LttTime (struct timespec) */
-/* (T3 = T2 - T1) */
-#define TimeSub(T3, T2, T1) \
-do \
-{\
- (T3).tv_sec = (T2).tv_sec - (T1).tv_sec; \
- (T3).tv_nsec = (T2).tv_nsec - (T1).tv_nsec; \
- if((T3).tv_nsec < 0)\
- {\
- (T3).tv_sec--;\
- (T3).tv_nsec += 1000000000;\
- }\
-} while(0)
-
-/* (T3 = T2 + T1) */
-#define TimeAdd(T3, T2, T1) \
-do \
-{\
- (T3).tv_sec = (T2).tv_sec + (T1).tv_sec; \
- (T3).tv_nsec = (T2).tv_nsec + (T1).tv_nsec; \
- if((T3).tv_nsec >= 1000000000)\
- {\
- (T3).tv_sec += (T3).tv_nsec / 1000000000;\
- (T3).tv_nsec = (T3).tv_nsec % 1000000000;\
- }\
-} while(0)
-
-/* (T2 = T1 * FLOAT) */
-/* WARNING : use this multiplicator carefully : on 32 bits, multiplying
- * by more than 4 could overflow the tv_nsec.
- */
-#define TimeMul(T2, T1, FLOAT) \
-do \
-{\
- (T2).tv_sec = (T1).tv_sec * (FLOAT); \
- (T2).tv_nsec = (T1).tv_nsec * (FLOAT); \
- if((T2).tv_nsec >= 1000000000)\
- {\
- (T2).tv_sec += (T2).tv_nsec / 1000000000;\
- (T2).tv_nsec = (T2).tv_nsec % 1000000000;\
- }\
-} while(0)
-
-
-
-
#include <ltt/ltt-private.h>