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)

Reply via email to