#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. */
+
+typedef struct _LttEventPosition LttEventPosition;
+
+
/* Differences between architectures include word sizes, endianess,
alignment, floating point format and calling conventions. For a
packed binary trace, endianess and size matter, assuming that the
{ 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)
-
-
-
#include <ltt/ltt-private.h>