uint64_t (even at 12MHz) isn't going to overflow any time soon, don't worry about wrapping.
This commit is contained in:
parent
9c2f236463
commit
c0af448efa
9
util.c
9
util.c
|
@ -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
5
util.h
|
@ -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]
|
||||||
|
|
Loading…
Reference in a new issue