Hi Adhemerval, > The align the GNU extension with the others one that accept specify > which clock to wait for (such as pthread_mutex_clocklock). > > Check on x86_64-linux-gnu. > --- > nptl/pthread_clockjoin.c | 4 ++ > sysdeps/pthread/Makefile | 2 +- > sysdeps/pthread/tst-join15.c | 80 > ++++++++++++++++++++++++++++++++++++ 3 files changed, 85 > insertions(+), 1 deletion(-) create mode 100644 > sysdeps/pthread/tst-join15.c > > diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c > index 0baba1e83d..3d54fe588f 100644 > --- a/nptl/pthread_clockjoin.c > +++ b/nptl/pthread_clockjoin.c > @@ -17,12 +17,16 @@ > . */ > > #include > +#include > #include "pthreadP.h" > > int > __pthread_clockjoin_np64 (pthread_t threadid, void **thread_return, > clockid_t clockid, const struct > __timespec64 *abstime) { > + if (!futex_abstimed_supported_clockid (clockid)) > + return EINVAL; > + > return __pthread_clockjoin_ex (threadid, thread_return, > clockid, abstime, true); > } > diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile > index 45a15b0b1a..8f335c13b5 100644 > --- a/sysdeps/pthread/Makefile > +++ b/sysdeps/pthread/Makefile > @@ -77,7 +77,7 @@ tests += tst-cnd-basic tst-mtx-trylock > tst-cnd-broadcast \ tst-getpid3 \ > tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 > tst-join7 \ tst-join8 tst-join9 tst-join10 tst-join11 tst-join12 > tst-join13 \ > - tst-join14 \ > + tst-join14 tst-join15 \ > tst-key1 tst-key2 tst-key3 tst-key4 \ > tst-kill1 tst-kill2 tst-kill3 tst-kill4 tst-kill5 tst-kill6 > \ tst-locale1 tst-locale2 \ > diff --git a/sysdeps/pthread/tst-join15.c > b/sysdeps/pthread/tst-join15.c new file mode 100644 > index 0000000000..4ed767e733 > --- /dev/null > +++ b/sysdeps/pthread/tst-join15.c > @@ -0,0 +1,80 @@ > +/* Check pthread_clockjoin_np clock support. > + Copyright (C) 2020 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 > +#include > +#include > +#include > + > +static void * > +tf (void *arg) > +{ > + pause (); > + return NULL; > +} > + > + > +static int > +do_test (void) > +{ > + const clockid_t clocks[] = { > + CLOCK_REALTIME, > + CLOCK_MONOTONIC, > + CLOCK_PROCESS_CPUTIME_ID, > + CLOCK_THREAD_CPUTIME_ID, > + CLOCK_THREAD_CPUTIME_ID, > + CLOCK_MONOTONIC_RAW, > + CLOCK_REALTIME_COARSE, > + CLOCK_MONOTONIC_COARSE, > +#ifdef CLOCK_BOOTTIME > + CLOCK_BOOTTIME, > +#endif > +#ifdef CLOCK_REALTIME_ALARM > + CLOCK_REALTIME_ALARM, > +#endif > +#ifdef CLOCK_BOOTTIME_ALARM > + CLOCK_BOOTTIME_ALARM, > +#endif > +#ifdef CLOCK_TAI > + CLOCK_TAI > +#endif > + }; > + > + pthread_t thr = xpthread_create (NULL, tf, NULL); > + > + for (int t = 0; t < array_length (clocks); t++) > + { > + /* A valid timeout so valid clock timeout. */ > + struct timespec tmo = timespec_add (xclock_now (clocks[t]), > + make_timespec (0, > 100000000)); + > + int ret = clocks[t] == CLOCK_REALTIME || clocks[t] == > CLOCK_MONOTONIC > + ? ETIMEDOUT : EINVAL; > + > + TEST_COMPARE (pthread_clockjoin_np (thr, NULL, clocks[t], > &tmo), ret); > + } > + > + return 0; > +} > + > +#include Reviewed-by: Lukasz Majewski When can we expect that those patches will be pulled? It seems like we mostly remove dead (i.e. non Y2038 supporting) code in this series. As aio_suspend depends on this patch series I would be great if we would pull those sooner than latter :-). Adhemerval, thanks again for refactoring the futex code. 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