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;
}
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) {
// wrapped.
return (~(t1 - t2) + 1) * 1000U / 12U;
} else {
return (t2 - t1) * 1000U / 12U;
}
return (t2 - t1) * 1000U / 12U;
}
void normalize_timespec(struct timespec *ts)

5
util.h
View file

@ -26,10 +26,9 @@
uint64_t mstime(void);
/* Returns the time elapsed, in nanoseconds, from t1 to t2,
* where t1 and t2 are 12MHz counters,
* accounting for wrapping.
* where t1 and t2 are 12MHz counters.
*/
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
* [0,999999999]