mega modif by Mathieu Desnoyers. Independant main windows, multiple tracesets, contro...
[lttv.git] / ltt / branches / poly / include / ltt / ltt.h
index 7c347414926d7804d2119128b646c2a89924124b..158553622fc02102be136bda10faf9ac8733f12c 100644 (file)
@@ -61,6 +61,7 @@ typedef struct _LttField LttField;
 
 typedef struct _LttEvent LttEvent;
 
+typedef struct _LttSystemDescription LttSystemDescription;
 
 /* Checksums are used to differentiate facilities which have the same name
    but differ. */
@@ -74,10 +75,27 @@ typedef unsigned long LttChecksum;
    times per second) of the real time clock with their corresponding 
    cycle count values. */
 
-typedef struct timespec LttTime;
+typedef struct _LttTime {
+  unsigned long tv_sec;
+  unsigned long tv_nsec;
+} LttTime;
+
+
+typedef struct _TimeInterval{
+  LttTime startTime;
+  LttTime endTime;  
+} TimeInterval;
+
 
 typedef uint64_t LttCycleCount;
 
+#define NANSECOND_CONST       1000000000
+
+/* 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
@@ -93,6 +111,53 @@ typedef enum _LttArchEndian
 { 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;  \
+  if((T2).tv_nsec < (T1).tv_nsec)\
+    {\
+    (T3).tv_sec--;\
+    (T3).tv_nsec = NANSECOND_CONST - (T1).tv_nsec + (T2).tv_nsec;\
+    }\
+  else\
+    {\
+    (T3).tv_nsec = (T2).tv_nsec - (T1).tv_nsec;\
+    }\
+} 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 >= NANSECOND_CONST)\
+    {\
+    (T3).tv_sec += (T3).tv_nsec / NANSECOND_CONST;\
+    (T3).tv_nsec = (T3).tv_nsec % NANSECOND_CONST;\
+    }\
+} 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 >= NANSECOND_CONST)\
+    {\
+    (T2).tv_sec += (T2).tv_nsec / NANSECOND_CONST;\
+    (T2).tv_nsec = (T2).tv_nsec % NANSECOND_CONST;\
+    }\
+} while(0)
+
+
 
 
 #include <ltt/ltt-private.h>
This page took 0.023413 seconds and 4 git commands to generate.