Dear community, > This code provides test to check if time on target machine is properly > read via ntp_gettime syscall. > > --- > Changes for v2: > - Check time before and after calling ntp_gettime{x} to avoid > situation when seconds rollover between call to ntp_gettime and > wrapper providing current time. Are there any more comments regarding v2 of this patch? Is it ready for submission? > --- > sysdeps/unix/sysv/linux/Makefile | 2 +- > sysdeps/unix/sysv/linux/tst-ntp_gettime.c | 56 > +++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 > deletion(-) create mode 100644 > sysdeps/unix/sysv/linux/tst-ntp_gettime.c > > diff --git a/sysdeps/unix/sysv/linux/Makefile > b/sysdeps/unix/sysv/linux/Makefile index b8c1caa505..8a07870cb4 100644 > --- a/sysdeps/unix/sysv/linux/Makefile > +++ b/sysdeps/unix/sysv/linux/Makefile > @@ -113,7 +113,7 @@ tests += tst-clone tst-clone2 tst-clone3 > tst-fanotify tst-personality \ tst-tgkill tst-sysvsem-linux > tst-sysvmsg-linux tst-sysvshm-linux \ tst-timerfd tst-ppoll > tst-futimens tst-utime tst-utimes \ tst-clock_adjtime tst-adjtimex > tst-ntp_adjtime tst-futimes \ > - tst-lutimes > + tst-lutimes tst-ntp_gettime > tests-internal += tst-ofdlocks-compat tst-sigcontext-get_pc > tests-time64 += \ > tst-futimes-time64\ > diff --git a/sysdeps/unix/sysv/linux/tst-ntp_gettime.c > b/sysdeps/unix/sysv/linux/tst-ntp_gettime.c new file mode 100644 > index 0000000000..6cd3a0ec2c > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-ntp_gettime.c > @@ -0,0 +1,56 @@ > +/* Test for ntp_gettime > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#include > +#include > +#include > +#include > +#include > + > +#ifndef NTP_GETTIME_SYSCALL > +# define NTP_GETTIME_SYSCALL ntp_gettime > +#endif > + > +#define STR(__s) #__s > + > +static int > +do_test (void) > +{ > + struct timespec tv_before_ntp, tv_after_ntp; > + struct ntptimeval ntv; > + > + /* To prevent seconds rollover (which is very unlikely though), > + loop until we do match seconds values before and after > + call to ntp_gettime. */ > + do { > + tv_before_ntp = xclock_now (CLOCK_REALTIME); > + > + int ret = NTP_GETTIME_SYSCALL (&ntv); > + if (ret == -1) > + FAIL_EXIT1 (STR(NTP_GETTIME_SYSCALL)" failed: %m\n"); > + > + tv_after_ntp = xclock_now (CLOCK_REALTIME); > + } while (tv_after_ntp.tv_sec != tv_before_ntp.tv_sec); > + > + if (tv_after_ntp.tv_sec != ntv.time.tv_sec) > + FAIL_EXIT1 (STR(NTP_GETTIME_SYSCALL)" provided wrong time!\n"); > + > + return 0; > +} > + > +#include Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de