OSDN Git Service

testptp: promote 'perout' variable to int64_t
authorVladimir Oltean <olteanv@gmail.com>
Mon, 20 Jul 2020 17:55:58 +0000 (20:55 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Jul 2020 01:04:59 +0000 (18:04 -0700)
Since 'perout' holds the nanosecond value of the signal's period, it
should be a 64-bit value. Current assumption is that it cannot be larger
than 1 second.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/ptp/testptp.c

index da7a9dd..edc1e50 100644 (file)
@@ -35,6 +35,8 @@
 #define CLOCK_INVALID -1
 #endif
 
+#define NSEC_PER_SEC 1000000000LL
+
 /* clock_adjtime is not available in GLIBC < 2.14 */
 #if !__GLIBC_PREREQ(2, 14)
 #include <sys/syscall.h>
@@ -169,7 +171,6 @@ int main(int argc, char *argv[])
        int list_pins = 0;
        int pct_offset = 0;
        int n_samples = 0;
-       int perout = -1;
        int pin_index = -1, pin_func;
        int pps = -1;
        int seconds = 0;
@@ -177,6 +178,7 @@ int main(int argc, char *argv[])
 
        int64_t t1, t2, tp;
        int64_t interval, offset;
+       int64_t perout = -1;
 
        progname = strrchr(argv[0], '/');
        progname = progname ? 1+progname : argv[0];
@@ -215,7 +217,7 @@ int main(int argc, char *argv[])
                        }
                        break;
                case 'p':
-                       perout = atoi(optarg);
+                       perout = atoll(optarg);
                        break;
                case 'P':
                        pps = atoi(optarg);
@@ -400,8 +402,8 @@ int main(int argc, char *argv[])
                perout_request.index = index;
                perout_request.start.sec = ts.tv_sec + 2;
                perout_request.start.nsec = 0;
-               perout_request.period.sec = 0;
-               perout_request.period.nsec = perout;
+               perout_request.period.sec = perout / NSEC_PER_SEC;
+               perout_request.period.nsec = perout % NSEC_PER_SEC;
                if (ioctl(fd, PTP_PEROUT_REQUEST, &perout_request)) {
                        perror("PTP_PEROUT_REQUEST");
                } else {