On Sat, Apr 13, 2019 at 10:00 AM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Sat, Apr 13, 2019 at 12:07 AM Kirtika Ruchandani <kirtika@xxxxxxxxxx> wrote: > > > > On Fri, Apr 12, 2019 at 2:49 PM Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote: > > > > > > On 4/12/19 2:43 PM, Kirtika Ruchandani wrote: > > > > On Fri, Apr 12, 2019 at 2:40 PM <greearb@xxxxxxxxxxxxxxx> wrote: > > > >> > > > >> From: Ben Greear <greearb@xxxxxxxxxxxxxxx> > > > >> > > > >> This lets us more precisely calculate the absolute timestamp > > > >> of last-rix (ie, now - idle). > > > > > > > > Can you use 64-bit timestamps? struct timeval suffers from the > > > > overflow after 2038 problem. > > > > > > What is the preferred API to do this? Whatever it is, it would need > > > to compile on old crufty systems as well. > > > > I am not sure what the guidance for userspace is. The kernel uses > > 'struct timespec64' I think. > > Arnd (cc-ed) who has mostly led the 2038 problem in the kernel might > > have more input on the > > "old crufty systems" part. > > I'm not sure what you are trying to do, and there are different > answers depending on the usecase. > > For getting the time in the kernel, see Documentation/core-api/timekeeping.rst > do_gettimeofday() is going away for many reasons, so don't use that. > It sounds like you want "ktime_to_ms(ktime_get())" here. > > In userspace interfaces, you should pass 64-bit nanoseconds as returned > by ktime_get_ns(). > > If you want to pretty-print the current wall-clock, use the %pt format string > on a 'struct rtc_time'. Ah, I see now this was just userspace code. In that case, using gettimeofday() works fine, it will end up using a 64-bit version of 'timeval', and converting that to 64-bit milliseconds is safe. Using clock_gettime() is generally preferred over gettimeofday() since it avoids the conversion from nanoseconds to microseconds (which you then convert to milliseconds). Arnd