+ if(t1.tv_sec > t2.tv_sec) return 1;
+ if(t1.tv_sec < t2.tv_sec) return -1;
+ if(t1.tv_nsec > t2.tv_nsec) return 1;
+ if(t1.tv_nsec < t2.tv_nsec) return -1;
+ return 0;
+}
+
+#define LTT_TIME_MIN(a,b) ((ltt_time_compare((a),(b)) < 0) ? (a) : (b))
+#define LTT_TIME_MAX(a,b) ((ltt_time_compare((a),(b)) > 0) ? (a) : (b))
+
+#define MAX_TV_SEC_TO_DOUBLE 0x7FFFFF
+static inline double ltt_time_to_double(LttTime t1)
+{
+ /* We lose precision if tv_sec is > than (2^23)-1
+ *
+ * Max values that fits in a double (53 bits precision on normalised
+ * mantissa):
+ * tv_nsec : NANOSECONDS_PER_SECONDS : 2^30
+ *
+ * So we have 53-30 = 23 bits left for tv_sec.
+ * */
+ g_assert(t1.tv_sec <= MAX_TV_SEC_TO_DOUBLE);
+ if(t1.tv_sec > MAX_TV_SEC_TO_DOUBLE)
+ g_warning("Precision loss in conversion LttTime to double");
+ return (double)t1.tv_sec + (double)t1.tv_nsec / NANOSECONDS_PER_SECOND;
+}
+
+
+static inline LttTime ltt_time_from_double(double t1)
+{
+ /* We lose precision if tv_sec is > than (2^23)-1
+ *
+ * Max values that fits in a double (53 bits precision on normalised
+ * mantissa):
+ * tv_nsec : NANOSECONDS_PER_SECONDS : 2^30
+ *
+ * So we have 53-30 = 23 bits left for tv_sec.
+ * */
+ g_assert(t1 <= MAX_TV_SEC_TO_DOUBLE);
+ if(t1 > MAX_TV_SEC_TO_DOUBLE)
+ g_warning("Conversion from non precise double to LttTime");