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;
        }

Reply via email to