replace gettimeofday with clock_gettime

POSIX.1-2008 has marked gettimeofday(2) as obsolete, recommending the
use of clock_gettime(2) instead.

CLOCK_MONOTONIC has been used instead of CLOCK_REALTIME because it is
unaffected by manual changes in the system clock. This makes it better
for our purposes, namely, measuring the difference between two points in
time.

tv_sec has been casted to long in most places since POSIX does not
define the actual type of time_t.
This commit is contained in:
Pranjal Kole 2022-01-15 14:56:13 +05:30
parent 0d649408a0
commit 0da19a81bc
12 changed files with 123 additions and 103 deletions

View file

@ -292,12 +292,11 @@ fdm_ptmx(struct fdm *fdm, int fd, int events, void *data)
clock_gettime(CLOCK_MONOTONIC, &now);
if (last.tv_sec > 0 || last.tv_nsec > 0) {
struct timeval diff;
struct timeval l = {last.tv_sec, last.tv_nsec / 1000};
struct timeval n = {now.tv_sec, now.tv_nsec / 1000};
struct timespec diff;
timersub(&n, &l, &diff);
LOG_INFO("waited %lu µs for more input", diff.tv_usec);
timespec_sub(&now, &last, &diff);
LOG_INFO("waited %lds %ldns for more input",
(long)diff.tv_sec, diff.tv_nsec);
}
last = now;
#endif