> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Dmitry Kozlyuk > Sent: Tuesday, March 16, 2021 9:08 PM > > 2021-03-16 11:59 (UTC-0700), Stephen Hemminger: > > On Sun, 14 Feb 2021 05:16:11 +0300 > > Dmitry Kozlyuk <dmitry.kozl...@gmail.com> wrote: > > > > > +rte_time_get_us(struct rte_time_us *now) > > > +{ > > > + struct timeval sys; > > > + > > > + gettimeofday(&sys, NULL); > > > + now->sec = sys.tv_sec; > > > + now->usec = sys.tv_usec; > > > +} > > > > Why would drivers want the default (wall clock) time instead > > of using monotonic clock. The wall clock gets changed by NTP > > and that is rarely what you want except for the case of log messages. > > * gettimeofday() is mostly used to measure time (tests, hns3 PMD), so > you're > right, monotonic clock is what that code really needs.
If using monotonic time here, we don't need a struct. A single 64 bit integer counting microseconds can hold thousands of years. > > * ena PMD uses gettimeofday() with pthread_cond_timedwait() without > calling > pthread_cond_setclock(), which is a bug, I believe. > > * hns3 PMD actually uses gettimeofday() for logs. > > For wall clock time there is C11 timespec_get(), so I agree this API > should > be changed to monotonic, thanks.