ptp: Add a command line option in testptp to set a specific PTP time
authorManfred Rudigier <manfred.rudigier@omicron.at>
Tue, 25 Mar 2014 11:24:05 +0000 (12:24 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 26 Mar 2014 20:43:36 +0000 (16:43 -0400)
Signed-off-by: Manfred Rudigier <manfred.rudigier@omicron.at>
Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/ptp/testptp.c

index e9eaee622032c7a0682bbccacccb6013745e11af..13bddd5427bd28aa892f2b1bcbec5c26fed48ed2 100644 (file)
@@ -131,7 +131,8 @@ static void usage(char *progname)
                " -P val     enable or disable (val=1|0) the system clock PPS\n"
                " -s         set the ptp clock time from the system time\n"
                " -S         set the system time from the ptp clock time\n"
-               " -t val     shift the ptp clock time by 'val' seconds\n",
+               " -t val     shift the ptp clock time by 'val' seconds\n"
+               " -T val     set the ptp clock time to 'val' seconds\n",
                progname);
 }
 
@@ -172,6 +173,7 @@ int main(int argc, char *argv[])
        int perout = -1;
        int pin_index = -1, pin_func;
        int pps = -1;
+       int seconds = 0;
        int settime = 0;
 
        int64_t t1, t2, tp;
@@ -179,7 +181,7 @@ int main(int argc, char *argv[])
 
        progname = strrchr(argv[0], '/');
        progname = progname ? 1+progname : argv[0];
-       while (EOF != (c = getopt(argc, argv, "a:A:cd:e:f:ghi:k:lL:p:P:sSt:v"))) {
+       while (EOF != (c = getopt(argc, argv, "a:A:cd:e:f:ghi:k:lL:p:P:sSt:T:v"))) {
                switch (c) {
                case 'a':
                        oneshot = atoi(optarg);
@@ -234,6 +236,10 @@ int main(int argc, char *argv[])
                case 't':
                        adjtime = atoi(optarg);
                        break;
+               case 'T':
+                       settime = 3;
+                       seconds = atoi(optarg);
+                       break;
                case 'h':
                        usage(progname);
                        return 0;
@@ -326,6 +332,16 @@ int main(int argc, char *argv[])
                }
        }
 
+       if (settime == 3) {
+               ts.tv_sec = seconds;
+               ts.tv_nsec = 0;
+               if (clock_settime(clkid, &ts)) {
+                       perror("clock_settime");
+               } else {
+                       puts("set time okay");
+               }
+       }
+
        if (extts) {
                memset(&extts_request, 0, sizeof(extts_request));
                extts_request.index = index;