From: compudj Date: Mon, 16 Aug 2004 04:35:08 +0000 (+0000) Subject: tweak time_x_double X-Git-Tag: v0.12.20~2700 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=7db8c19d0e7ea91bee71e2fd6cb035568223ff05;p=lttv.git tweak time_x_double git-svn-id: http://ltt.polymtl.ca/svn@789 04897980-b3bd-0310-b5e0-8ef037075253 --- diff --git a/ltt/branches/poly/ltt/time.h b/ltt/branches/poly/ltt/time.h index 6ab53fca..483e2e58 100644 --- a/ltt/branches/poly/ltt/time.h +++ b/ltt/branches/poly/ltt/time.h @@ -29,10 +29,17 @@ typedef struct _LttTime { #define NANOSECONDS_PER_SECOND 1000000000 + +/* We give the DIV and MUL constants so we can always multiply, for a + * division as well as a multiplication of NANOSECONDS_PER_SECOND */ /* 2^30/1.07374182400631629848 = 1000000000.0 */ -#define DOUBLE_SHIFT_CONST 1.07374182400631629848 +#define DOUBLE_SHIFT_CONST_DIV 1.07374182400631629848 #define DOUBLE_SHIFT 30 +/* 2^30*0.93132257461547851562 = 1000000000.0000000000 */ +#define DOUBLE_SHIFT_CONST_MUL 0.93132257461547851562 + + /* 1953125 * 2^9 = NANOSECONDS_PER_SECOND */ #define LTT_TIME_UINT_SHIFT_CONST 1953125 #define LTT_TIME_UINT_SHIFT 9 @@ -109,7 +116,7 @@ static inline double ltt_time_to_double(LttTime t1) g_warning("Precision loss in conversion LttTime to double"); #endif //EXTRA_CHECK return ((double)((guint64)t1.tv_sec<> DOUBLE_SHIFT; + res.tv_sec = (guint64)(t1 * DOUBLE_SHIFT_CONST_DIV) >> DOUBLE_SHIFT; res.tv_nsec = (t1 - (((guint64)res.tv_sec<