On Tue, 09 Mar 2021 19:09:01 +0100 Yann Droneaud wrote: > Hi, > > Le mardi 09 mars 2021 à 12:47 +0100, Lukasz Majewski a écrit : > > 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..5a1261fd35 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-ntp_gettime.c > @@ -0,0 +1,49 @@ > +/* 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_now; > +  struct ntptimeval ntv; > + > +  int ret = NTP_GETTIME_SYSCALL (&ntv); > +  if (ret == -1) > +    FAIL_EXIT1 (STR(NTP_GETTIME_SYSCALL)" failed: %m\n"); > + > +  tv_now = xclock_now (CLOCK_REALTIME); > + > +  if (tv_now.tv_sec != ntv.time.tv_sec) > +    FAIL_EXIT1 ("ntp_gettime provided wrong time!\n"); > + > > This can fail if ntv.time.tv_usec is somewhere around 999999µs and the > process is scheduled before completing xclock_now(). > > It would be better to try again a few times. If we want to avoid such error - maybe it would be better to convert struct ntptimeval's struct timeval time member to struct timespec and then use timespec_sub() to get the time difference. Then this difference could be assessed in support_timespec_check_in_range() with some allowed percentage variation (like 10%). > > Regards. > 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