mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
selftest/ptp: update ptp selftest to exercise the gettimex options
With the inclusion of commit c259acab83
("ptp/ioctl: support
MONOTONIC{,_RAW} timestamps for PTP_SYS_OFFSET_EXTENDED") clock_gettime()
now allows retrieval of pre/post timestamps for CLOCK_MONOTONIC and
CLOCK_MONOTONIC_RAW timebases along with the previously supported
CLOCK_REALTIME.
This patch adds a command line option 'y' to the testptp program to
choose one of the allowed timebases [realtime aka system, monotonic,
and monotonic-raw).
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Link: https://patch.msgid.link/20241003101506.769418-1-maheshb@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2f65168355
commit
3d07b691ee
@ -146,6 +146,7 @@ static void usage(char *progname)
|
||||
" -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"
|
||||
" -y val pre/post tstamp timebase to use {realtime|monotonic|monotonic-raw}\n"
|
||||
" -z test combinations of rising/falling external time stamp flags\n",
|
||||
progname, PTP_MAX_SAMPLES);
|
||||
}
|
||||
@ -189,6 +190,7 @@ int main(int argc, char *argv[])
|
||||
int seconds = 0;
|
||||
int settime = 0;
|
||||
int channel = -1;
|
||||
clockid_t ext_clockid = CLOCK_REALTIME;
|
||||
|
||||
int64_t t1, t2, tp;
|
||||
int64_t interval, offset;
|
||||
@ -198,7 +200,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:F:ghH:i:k:lL:n:o:p:P:sSt:T:w:x:Xz"))) {
|
||||
while (EOF != (c = getopt(argc, argv, "cd:e:f:F:ghH:i:k:lL:n:o:p:P:sSt:T:w:x:Xy:z"))) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
capabilities = 1;
|
||||
@ -278,6 +280,21 @@ int main(int argc, char *argv[])
|
||||
case 'X':
|
||||
getcross = 1;
|
||||
break;
|
||||
case 'y':
|
||||
if (!strcasecmp(optarg, "realtime"))
|
||||
ext_clockid = CLOCK_REALTIME;
|
||||
else if (!strcasecmp(optarg, "monotonic"))
|
||||
ext_clockid = CLOCK_MONOTONIC;
|
||||
else if (!strcasecmp(optarg, "monotonic-raw"))
|
||||
ext_clockid = CLOCK_MONOTONIC_RAW;
|
||||
else {
|
||||
fprintf(stderr,
|
||||
"type needs to be realtime, monotonic or monotonic-raw; was given %s\n",
|
||||
optarg);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'z':
|
||||
flagtest = 1;
|
||||
break;
|
||||
@ -566,6 +583,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
soe->n_samples = getextended;
|
||||
soe->clockid = ext_clockid;
|
||||
|
||||
if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, soe)) {
|
||||
perror("PTP_SYS_OFFSET_EXTENDED");
|
||||
@ -574,12 +592,46 @@ int main(int argc, char *argv[])
|
||||
getextended);
|
||||
|
||||
for (i = 0; i < getextended; i++) {
|
||||
printf("sample #%2d: system time before: %lld.%09u\n",
|
||||
i, soe->ts[i][0].sec, soe->ts[i][0].nsec);
|
||||
switch (ext_clockid) {
|
||||
case CLOCK_REALTIME:
|
||||
printf("sample #%2d: real time before: %lld.%09u\n",
|
||||
i, soe->ts[i][0].sec,
|
||||
soe->ts[i][0].nsec);
|
||||
break;
|
||||
case CLOCK_MONOTONIC:
|
||||
printf("sample #%2d: monotonic time before: %lld.%09u\n",
|
||||
i, soe->ts[i][0].sec,
|
||||
soe->ts[i][0].nsec);
|
||||
break;
|
||||
case CLOCK_MONOTONIC_RAW:
|
||||
printf("sample #%2d: monotonic-raw time before: %lld.%09u\n",
|
||||
i, soe->ts[i][0].sec,
|
||||
soe->ts[i][0].nsec);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
printf(" phc time: %lld.%09u\n",
|
||||
soe->ts[i][1].sec, soe->ts[i][1].nsec);
|
||||
printf(" system time after: %lld.%09u\n",
|
||||
soe->ts[i][2].sec, soe->ts[i][2].nsec);
|
||||
switch (ext_clockid) {
|
||||
case CLOCK_REALTIME:
|
||||
printf(" real time after: %lld.%09u\n",
|
||||
soe->ts[i][2].sec,
|
||||
soe->ts[i][2].nsec);
|
||||
break;
|
||||
case CLOCK_MONOTONIC:
|
||||
printf(" monotonic time after: %lld.%09u\n",
|
||||
soe->ts[i][2].sec,
|
||||
soe->ts[i][2].nsec);
|
||||
break;
|
||||
case CLOCK_MONOTONIC_RAW:
|
||||
printf(" monotonic-raw time after: %lld.%09u\n",
|
||||
soe->ts[i][2].sec,
|
||||
soe->ts[i][2].nsec);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user