Hi, Same deal here as in dd(1). We display the elapsed time so we want a monotonic clock.
-- Scott Cheloha Index: usr.bin/tftp/tftp.c =================================================================== RCS file: /cvs/src/usr.bin/tftp/tftp.c,v retrieving revision 1.24 diff -u -p -r1.24 tftp.c --- usr.bin/tftp/tftp.c 21 Oct 2014 06:15:16 -0000 1.24 +++ usr.bin/tftp/tftp.c 17 Aug 2017 01:44:46 -0000 @@ -52,6 +52,7 @@ #include <stddef.h> #include <stdlib.h> #include <string.h> +#include <time.h> #include <unistd.h> #include <netdb.h> @@ -83,8 +84,8 @@ extern int opt_tsize; extern int opt_tout; extern int opt_blksize; -struct timeval tstart; -struct timeval tstop; +struct timespec tstart; +struct timespec tstop; unsigned int segment_size = SEGSIZE; unsigned int packet_size = SEGSIZE + 4; @@ -548,13 +549,13 @@ tpacket(const char *s, struct tftphdr *t static void startclock(void) { - (void)gettimeofday(&tstart, NULL); + clock_gettime(CLOCK_MONOTONIC, &tstart); } static void stopclock(void) { - (void)gettimeofday(&tstop, NULL); + clock_gettime(CLOCK_MONOTONIC, &tstop); } static void @@ -563,8 +564,8 @@ printstats(const char *direction, unsign double delta; /* compute delta in 1/10's second units */ - delta = ((tstop.tv_sec * 10.) + (tstop.tv_usec / 100000)) - - ((tstart.tv_sec * 10.) + (tstart.tv_usec / 100000)); + delta = ((tstop.tv_sec * 10.) + (tstop.tv_nsec / 100000000)) - + ((tstart.tv_sec * 10.) + (tstart.tv_nsec / 100000000)); delta = delta / 10.; /* back to seconds */ printf("%s %lu bytes in %.1f seconds", direction, amount, delta); if (verbose)