Commit 3cf119ad authored by Alex Maftei's avatar Alex Maftei Committed by David S. Miller

selftests/ptp: Add -X option for testing PTP_SYS_OFFSET_PRECISE

The -X option was chosen because X looks like a cross, and the underlying
callback is 'get cross timestamp'.
Signed-off-by: default avatarAlex Maftei <alex.maftei@amd.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c8ba75c4
......@@ -144,6 +144,7 @@ static void usage(char *progname)
" -t val shift the ptp clock time by 'val' seconds\n"
" -T val set the ptp clock time to 'val' seconds\n"
" -x val get an extended ptp clock time with the desired number of samples (up to %d)\n"
" -X get a ptp clock cross timestamp\n"
" -z test combinations of rising/falling external time stamp flags\n",
progname, PTP_MAX_SAMPLES);
}
......@@ -160,6 +161,7 @@ int main(int argc, char *argv[])
struct ptp_clock_time *pct;
struct ptp_sys_offset *sysoff;
struct ptp_sys_offset_extended *soe;
struct ptp_sys_offset_precise *xts;
char *progname;
unsigned int i;
......@@ -179,6 +181,7 @@ int main(int argc, char *argv[])
int list_pins = 0;
int pct_offset = 0;
int getextended = 0;
int getcross = 0;
int n_samples = 0;
int pin_index = -1, pin_func;
int pps = -1;
......@@ -193,7 +196,7 @@ int main(int argc, char *argv[])
progname = strrchr(argv[0], '/');
progname = progname ? 1+progname : argv[0];
while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:o:p:P:sSt:T:w:x:z"))) {
while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:o:p:P:sSt:T:w:x:Xz"))) {
switch (c) {
case 'c':
capabilities = 1;
......@@ -267,6 +270,9 @@ int main(int argc, char *argv[])
return -1;
}
break;
case 'X':
getcross = 1;
break;
case 'z':
flagtest = 1;
break;
......@@ -575,6 +581,29 @@ int main(int argc, char *argv[])
free(soe);
}
if (getcross) {
xts = calloc(1, sizeof(*xts));
if (!xts) {
perror("calloc");
return -1;
}
if (ioctl(fd, PTP_SYS_OFFSET_PRECISE, xts)) {
perror("PTP_SYS_OFFSET_PRECISE");
} else {
puts("system and phc crosstimestamping request okay");
printf("device time: %lld.%09u\n",
xts->device.sec, xts->device.nsec);
printf("system time: %lld.%09u\n",
xts->sys_realtime.sec, xts->sys_realtime.nsec);
printf("monoraw time: %lld.%09u\n",
xts->sys_monoraw.sec, xts->sys_monoraw.nsec);
}
free(xts);
}
close(fd);
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment