On Tue, Jul 21, 2020 at 07:33:21PM +1000, Jonathan Gray wrote:
> Change from using timevals for ktime to 64 bit count of nanoseconds
> to closer match linux. From a discussion with cheloha@
>
>
>
> @@ -67,70 +65,66 @@ ktime_get_raw_ns(void)
> }
>
> static inline struct timespec64
> -ktime_to_timespec64(struct timeval tv)
> +ktime_to_timespec64(ktime_t k)
> {
> struct timespec64 ts;
> - ts.tv_sec = tv.tv_sec;
> - ts.tv_nsec = tv.tv_usec * NSEC_PER_USEC;
> + ts.tv_sec = k / NSEC_PER_SEC;
> + ts.tv_nsec = k % NSEC_PER_SEC;
This isn't quite right. You need to handle negative values of k, too.
ts.tv_sec = k / NSEC_PER_SEC;
ts.tv_nsec = k % NSEC_PER_SEC;
if (ts.tv_nsec < 0) {
ts.tv_sec--;
ts.tv_nsec += NSEC_PER_SEC;
}