X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Finclude%2Fltt%2Ftime.h;h=660e7e984a7da4a00d30d2f1dfe2f6935c31ea35;hb=daecc161cdd7a5931dc553307e3509010076ac35;hp=4f8094330647ec3927c5040a8579a56cb0e23922;hpb=308711e5772586ce8ecc22ce04e571b175309b8e;p=lttv.git diff --git a/ltt/branches/poly/include/ltt/time.h b/ltt/branches/poly/include/ltt/time.h index 4f809433..660e7e98 100644 --- a/ltt/branches/poly/include/ltt/time.h +++ b/ltt/branches/poly/include/ltt/time.h @@ -43,13 +43,22 @@ static inline LttTime ltt_time_add(LttTime t1, LttTime t2) static inline LttTime ltt_time_mul(LttTime t1, float f) { - double nsec; LttTime res; + float d; + double sec; - nsec = (double)t1.tv_nsec * f; - res.tv_sec = nsec / NANOSECONDS_PER_SECOND; - res.tv_nsec = nsec - res.tv_sec * NANOSECONDS_PER_SECOND; - res.tv_sec += t1.tv_sec * f; + if(f == 0.0){ + res.tv_sec = 0; + res.tv_nsec = 0; + }else{ + d = 1.0/f; + sec = t1.tv_sec / (double)d; + res.tv_sec = sec; + res.tv_nsec = t1.tv_nsec / (double)d + (sec - res.tv_sec) * + NANOSECONDS_PER_SECOND; + res.tv_sec += res.tv_nsec / NANOSECONDS_PER_SECOND; + res.tv_nsec %= NANOSECONDS_PER_SECOND; + } return res; } @@ -63,6 +72,8 @@ static inline LttTime ltt_time_div(LttTime t1, float f) res.tv_sec = sec; res.tv_nsec = t1.tv_nsec / (double)f + (sec - res.tv_sec) * NANOSECONDS_PER_SECOND; + res.tv_sec += res.tv_nsec / NANOSECONDS_PER_SECOND; + res.tv_nsec %= NANOSECONDS_PER_SECOND; return res; }