uint64_t (even at 12MHz) isn't going to overflow any time soon, don't worry about wrapping.

This commit is contained in:
Oliver Jowett 2015-02-08 17:59:20 +00:00
parent 9c2f236463
commit c0af448efa
2 changed files with 4 additions and 10 deletions

9
util.c
View file

@ -63,14 +63,9 @@ uint64_t mstime(void)
return mst; return mst;
} }
uint64_t receiveclock_ns_elapsed(uint64_t t1, uint64_t t2) int64_t receiveclock_ns_elapsed(uint64_t t1, uint64_t t2)
{ {
if (t2 < t1) { return (t2 - t1) * 1000U / 12U;
// wrapped.
return (~(t1 - t2) + 1) * 1000U / 12U;
} else {
return (t2 - t1) * 1000U / 12U;
}
} }
void normalize_timespec(struct timespec *ts) void normalize_timespec(struct timespec *ts)

5
util.h
View file

@ -26,10 +26,9 @@
uint64_t mstime(void); uint64_t mstime(void);
/* Returns the time elapsed, in nanoseconds, from t1 to t2, /* Returns the time elapsed, in nanoseconds, from t1 to t2,
* where t1 and t2 are 12MHz counters, * where t1 and t2 are 12MHz counters.
* accounting for wrapping.
*/ */
uint64_t receiveclock_ns_elapsed(uint64_t t1, uint64_t t2); int64_t receiveclock_ns_elapsed(uint64_t t1, uint64_t t2);
/* Normalize the value in ts so that ts->nsec lies in /* Normalize the value in ts so that ts->nsec lies in
* [0,999999999] * [0,999999999]