This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2 3/4] nptl: Add pthread_clockjoin_np



On 18/09/2019 05:30, Mike Crowe wrote:
> Introduce pthread_clockjoin_np as a version of pthread_timedjoin_np that
> accepts a clockid_t parameter to indicate which clock the timeout should be
> measured against. This mirrors the recently-added POSIX-proposed "clock"
> wait functions.

I see the addition begin reasonable now that we are also providing similar
functions for mutexes, conditional variables, read-write locks, and
semaphores.

> 
> 	* NEWS: Mention addition of pthread_clockjoin_np along with other
> 	"clock" variants of existing "timed" functions.
> 	* sysdeps/nptl/pthread.h: Add declaration of pthread_clockjoin_np.
> 	* manual/threads.texi: Add pthread_clockjoin_np.
> 	* nptl/Makefile: Add pthread_clockjoin source file.  Add new join
> 	tests.
> 	* nptl/Versions: Add pthread_clockjoin_np.
> 	* nptl/PthreadP.h: Rename __pthread_timedjoin_ex to
> 	__pthread_clockjoin_ex and add clockid_t parameter.
> 	* nptl/pthread_clockjoin.c: New file to implement pthread_clockjoin_np.
> 	* nptl/pthread_join_common.c (clockwait_tid): Rename from
> 	timedwait_tid and add clockid parameter.  Use __clock_gettime
> 	passing supplied clockid rather than using __gettimeofday.  Perform
> 	relative timeout calculation entirely in timespec.
> 	(__pthread_clockjoin_ex): Rename from __pthread_timedjoin_ex and
> 	add clockid parameter to pass to clockwait_tid rather than
> 	timedwait_tid.
> 	* nptl/pthread_timedjoin.c (__pthread_timedjoin_np): Call
> 	__pthread_clockjoin_ex passing CLOCK_REALTIME as clockid.
> 	* nptl/pthread_join.c (__pthread_join): Call __pthread_clockjoin_ex
> 	and pass zero as unused clockid_t parameter.
> 	* nptl/pthread_tryjoin.c (__pthread_tryjoin_np): Likewise.
> 	* nptl/thrd_join.c (thrd_join): Likewise.
> 	* nptl/tst-join3.c (tf): Ensure that mutex is unlocked after use so
> 	that it can be used again.  (do_test_clock): Rename from do_test and
> 	accept a clock parameter.  (do_test): Test pthread_timedjoin_np,
> 	pthread_clockjoin_np with CLOCK_REALTIME and pthread_clockjoin_np
> 	with CLOCK_MONOTONIC.
> 	* nptl/tst-join5.c (thread_join): Add support for testing
> 	pthread_clockjoin_np with both CLOCK_REALTIME and CLOCK_MONOTONIC.
> 	* nptl/tst-join10.c: Wrap tst-join5.c with
> 	USE_PTHREAD_CLOCKJOIN_NP_REALTIME.
> 	* nptl/tst-join11.c: Wrap tst-join5.c with
> 	USE_PTHREAD_CLOCKJOIN_NP_REALTIME and WAIT_IN_CHILD.
> 	* nptl/tst-join12.c: Wrap tst-join5.c with
> 	USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC.
> 	* nptl/tst-join13.c: Wrap tst-join5.c with
> 	USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC and WAIT_IN_CHILD.
> 	* sysdeps/unix/sysv/linux/aarch64/libpthread.abilist: Add
> 	pthread_clockjoin_np.
> 	* sysdeps/unix/sysv/linux/alpha/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/arm/be/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/arm/le/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/csky/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/hppa/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/i386/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/ia64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/nios2/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist:
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist:
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist:
> 	Likewise.
> 	* sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/sh/be/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/sh/le/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist: Likewise.
> 	* sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist: Likewise.

LGTM with some nits below.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> ---
>  ChangeLog                                                       | 71 +++++++-
>  NEWS                                                            |  9 +-
>  manual/threads.texi                                             | 12 +-
>  nptl/Makefile                                                   |  5 +-
>  nptl/Versions                                                   |  4 +-
>  nptl/pthreadP.h                                                 |  5 +-
>  nptl/pthread_clockjoin.c                                        | 28 +++-
>  nptl/pthread_join.c                                             |  2 +-
>  nptl/pthread_join_common.c                                      | 23 +-
>  nptl/pthread_timedjoin.c                                        |  3 +-
>  nptl/pthread_tryjoin.c                                          |  2 +-
>  nptl/thrd_join.c                                                |  2 +-
>  nptl/tst-join10.c                                               | 20 ++-
>  nptl/tst-join11.c                                               | 21 ++-
>  nptl/tst-join12.c                                               | 20 ++-
>  nptl/tst-join13.c                                               | 21 ++-
>  nptl/tst-join3.c                                                | 26 ++-
>  nptl/tst-join5.c                                                | 20 +-
>  sysdeps/nptl/pthread.h                                          | 11 +-
>  sysdeps/unix/sysv/linux/aarch64/libpthread.abilist              |  1 +-
>  sysdeps/unix/sysv/linux/alpha/libpthread.abilist                |  1 +-
>  sysdeps/unix/sysv/linux/arm/be/libpthread.abilist               |  1 +-
>  sysdeps/unix/sysv/linux/arm/le/libpthread.abilist               |  1 +-
>  sysdeps/unix/sysv/linux/csky/libpthread.abilist                 |  1 +-
>  sysdeps/unix/sysv/linux/hppa/libpthread.abilist                 |  1 +-
>  sysdeps/unix/sysv/linux/i386/libpthread.abilist                 |  1 +-
>  sysdeps/unix/sysv/linux/ia64/libpthread.abilist                 |  1 +-
>  sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist        |  1 +-
>  sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist          |  1 +-
>  sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist        |  1 +-
>  sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist        |  1 +-
>  sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist          |  1 +-
>  sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist          |  1 +-
>  sysdeps/unix/sysv/linux/nios2/libpthread.abilist                |  1 +-
>  sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist    |  1 +-
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist |  1 +-
>  sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist |  1 +-
>  sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist           |  1 +-
>  sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist         |  1 +-
>  sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist         |  1 +-
>  sysdeps/unix/sysv/linux/sh/be/libpthread.abilist                |  1 +-
>  sysdeps/unix/sysv/linux/sh/le/libpthread.abilist                |  1 +-
>  sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist        |  1 +-
>  sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist        |  1 +-
>  sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist            |  1 +-
>  sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist           |  1 +-
>  46 files changed, 300 insertions(+), 32 deletions(-)
>  create mode 100644 nptl/pthread_clockjoin.c
>  create mode 100644 nptl/tst-join10.c
>  create mode 100644 nptl/tst-join11.c
>  create mode 100644 nptl/tst-join12.c
>  create mode 100644 nptl/tst-join13.c
> 
> diff --git a/ChangeLog b/ChangeLog
> index 94ee860..8a2166d 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,4 +1,75 @@
>  2019-09-18  Mike Crowe  <mac@mcrowe.com>
> +	* NEWS: Mention addition of pthread_clockjoin_np along with other
> +	"clock" variants of existing "timed" functions.
> +	* sysdeps/nptl/pthread.h: Add declaration of pthread_clockjoin_np.
> +	* manual/threads.texi: Add pthread_clockjoin_np.
> +	* nptl/Makefile: Add pthread_clockjoin source file.  Add new join
> +	tests.
> +	* nptl/Versions: Add pthread_clockjoin_np.
> +	* nptl/PthreadP.h: Rename __pthread_timedjoin_ex to
> +	__pthread_clockjoin_ex and add clockid_t parameter.
> +	* nptl/pthread_clockjoin.c: New file to implement pthread_clockjoin_np.
> +	* nptl/pthread_join_common.c (clockwait_tid): Rename from
> +	timedwait_tid and add clockid parameter.  Use __clock_gettime
> +	passing supplied clockid rather than using __gettimeofday.  Perform
> +	relative timeout calculation entirely in timespec.
> +	(__pthread_clockjoin_ex): Rename from __pthread_timedjoin_ex and
> +	add clockid parameter to pass to clockwait_tid rather than
> +	timedwait_tid.
> +	* nptl/pthread_timedjoin.c (__pthread_timedjoin_np): Call
> +	__pthread_clockjoin_ex passing CLOCK_REALTIME as clockid.
> +	* nptl/pthread_join.c (__pthread_join): Call __pthread_clockjoin_ex
> +	and pass zero as unused clockid_t parameter.
> +	* nptl/pthread_tryjoin.c (__pthread_tryjoin_np): Likewise.
> +	* nptl/thrd_join.c (thrd_join): Likewise.
> +	* nptl/tst-join3.c (tf): Ensure that mutex is unlocked after use so
> +	that it can be used again.  (do_test_clock): Rename from do_test and
> +	accept a clock parameter.  (do_test): Test pthread_timedjoin_np,
> +	pthread_clockjoin_np with CLOCK_REALTIME and pthread_clockjoin_np
> +	with CLOCK_MONOTONIC.
> +	* nptl/tst-join5.c (thread_join): Add support for testing
> +	pthread_clockjoin_np with both CLOCK_REALTIME and CLOCK_MONOTONIC.
> +	* nptl/tst-join10.c: Wrap tst-join5.c with
> +	USE_PTHREAD_CLOCKJOIN_NP_REALTIME.
> +	* nptl/tst-join11.c: Wrap tst-join5.c with
> +	USE_PTHREAD_CLOCKJOIN_NP_REALTIME and WAIT_IN_CHILD.
> +	* nptl/tst-join12.c: Wrap tst-join5.c with
> +	USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC.
> +	* nptl/tst-join13.c: Wrap tst-join5.c with
> +	USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC and WAIT_IN_CHILD.
> +	* sysdeps/unix/sysv/linux/aarch64/libpthread.abilist: Add
> +	pthread_clockjoin_np.
> +	* sysdeps/unix/sysv/linux/alpha/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/arm/be/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/arm/le/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/csky/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/hppa/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/i386/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/ia64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/nios2/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist:
> +	Likewise.
> +	* sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist:
> +	Likewise.
> +	* sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist:
> +	Likewise.
> +	* sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/sh/be/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/sh/le/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist: Likewise.
> +	* sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist: Likewise.
> +
> +2019-09-18  Mike Crowe  <mac@mcrowe.com>
>  
>  	* manual/threads.texi: Add brief documentation for
>  	pthread_tryjoin_np and pthread_timedjoin_np.
> diff --git a/NEWS b/NEWS
> index d728684..bb1b07a 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -81,10 +81,11 @@ Major new features:
>  
>  * Add new POSIX-proposed pthread_cond_clockwait, pthread_mutex_clocklock,
>    pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock and sem_clockwait
> -  functions.  These behave similarly to their "timed" equivalents, but also
> -  accept a clockid_t parameter to determine which clock their timeout should
> -  be measured against.  All functions allow waiting against CLOCK_MONOTONIC
> -  and CLOCK_REALTIME.  The decision of which clock to be used is made at the
> +  functions along with glibc-specific pthread_clockjoin_np.  These behave
> +  similarly to their "timed" equivalents, but also accept a clockid_t
> +  parameter to determine which clock their timeout should be measured
> +  against.  All functions allow waiting against CLOCK_MONOTONIC and
> +  CLOCK_REALTIME.  The decision of which clock to be used is made at the
>    time of the wait (unlike with pthread_condattr_setclock, which requires
>    the clock choice at initialization time).

This will need to be a new point in 2.31 entry, with the text adjusted 
accordingly. 

>  
> diff --git a/manual/threads.texi b/manual/threads.texi
> index 8dcfc53..0055025 100644
> --- a/manual/threads.texi
> +++ b/manual/threads.texi
> @@ -751,6 +751,18 @@ reached if the thread has not terminated by that time and return
>  will wait forever in the same way as @code{pthread_join}.
>  @end deftypefun
>  
> +@comment pthread.h
> +@comment GNU extension
> +@deftypefun int pthread_clockjoin_np (pthread_t *@var{thread},
> +				      void **@var{thread_return},
> +                                      clockid_t @var{clockid},
> +				      const struct timespec *@var{abstime})
> +@standards{GNU, pthread.h}
> +@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
> +Behaves like @code{pthread_timedjoin_np} except that time absolute time in
> +@var{abstime} is measured against the clock specified by @var{clockid}.
> +@end deftypefun
> +
>  @c FIXME these are undocumented:
>  @c pthread_atfork
>  @c pthread_attr_destroy

Ok.

> diff --git a/nptl/Makefile b/nptl/Makefile
> index 66f89f1..5521a58 100644
> --- a/nptl/Makefile
> +++ b/nptl/Makefile
> @@ -51,7 +51,7 @@ pthread-compat-wrappers = \
>  libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
>  		      pthread_create pthread_exit pthread_detach \
>  		      pthread_join pthread_tryjoin pthread_timedjoin \
> -		      pthread_join_common pthread_yield \
> +		      pthread_clockjoin pthread_join_common pthread_yield \
>  		      pthread_getconcurrency pthread_setconcurrency \
>  		      pthread_getschedparam pthread_setschedparam \
>  		      pthread_setschedprio \

Ok.

> @@ -189,6 +189,7 @@ CFLAGS-forward.c += -fexceptions
>  CFLAGS-pthread_testcancel.c += -fexceptions
>  CFLAGS-pthread_join.c += -fexceptions -fasynchronous-unwind-tables
>  CFLAGS-pthread_timedjoin.c += -fexceptions -fasynchronous-unwind-tables
> +CFLAGS-pthread_clockjoin.c += -fexceptions -fasynchronous-unwind-tables
>  CFLAGS-pthread_once.c += $(uses-callbacks) -fexceptions \
>  			-fasynchronous-unwind-tables
>  CFLAGS-pthread_cond_wait.c += -fexceptions -fasynchronous-unwind-tables
> @@ -273,7 +274,7 @@ tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
>  	tst-kill1 tst-kill2 tst-kill3 tst-kill4 tst-kill5 tst-kill6 \
>  	tst-raise1 \
>  	tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 tst-join7 \
> -	tst-join8 tst-join9 \
> +	tst-join8 tst-join9 tst-join10 tst-join11 tst-join12 tst-join13 \
>  	tst-detach1 \
>  	tst-eintr2 tst-eintr3 tst-eintr4 tst-eintr5 \
>  	tst-tsd1 tst-tsd2 tst-tsd3 tst-tsd4 tst-tsd5 tst-tsd6 \

Ok.

> diff --git a/nptl/Versions b/nptl/Versions
> index 6f4d74f..c169400 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> @@ -279,6 +279,10 @@ libpthread {
>      pthread_mutex_clocklock;
>    }
>  
> +  GLIBC_2.31 {
> +    pthread_clockjoin_np;
> +  }
> +
>    GLIBC_PRIVATE {
>      __pthread_initialize_minimal;
>      __pthread_clock_gettime; __pthread_clock_settime;

Ok.

> diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
> index 070b3af..19bd544 100644
> --- a/nptl/pthreadP.h
> +++ b/nptl/pthreadP.h
> @@ -475,7 +475,8 @@ extern int __pthread_setcanceltype (int type, int *oldtype);
>  extern int __pthread_enable_asynccancel (void) attribute_hidden;
>  extern void __pthread_disable_asynccancel (int oldtype) attribute_hidden;
>  extern void __pthread_testcancel (void);
> -extern int __pthread_timedjoin_ex (pthread_t, void **, const struct timespec *,
> +extern int __pthread_clockjoin_ex (pthread_t, void **,
> +                                   clockid_t, const struct timespec *,
>  				   bool);
>  
>  #if IS_IN (libpthread)
> @@ -495,7 +496,7 @@ hidden_proto (__pthread_setcancelstate)
>  hidden_proto (__pthread_testcancel)
>  hidden_proto (__pthread_mutexattr_init)
>  hidden_proto (__pthread_mutexattr_settype)
> -hidden_proto (__pthread_timedjoin_ex)
> +hidden_proto (__pthread_clockjoin_ex)
>  #endif
>  
>  extern int __pthread_cond_broadcast_2_0 (pthread_cond_2_0_t *cond);

Ok.

> diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c
> new file mode 100644
> index 0000000..fc1ef18
> --- /dev/null
> +++ b/nptl/pthread_clockjoin.c
> @@ -0,0 +1,28 @@

It misses the one line file description.

> +/* Copyright (C) 2019 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
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#include "pthreadP.h"
> +
> +int
> +__pthread_clockjoin_np (pthread_t threadid, void **thread_return,
> +			clockid_t clockid,
> +			const struct timespec *abstime)
> +{
> +  return __pthread_clockjoin_ex (threadid, thread_return,
> +                                 clockid, abstime, true);
> +}
> +weak_alias (__pthread_clockjoin_np, pthread_clockjoin_np)

Ok.

> diff --git a/nptl/pthread_join.c b/nptl/pthread_join.c
> index 3523b20..e189155 100644
> --- a/nptl/pthread_join.c
> +++ b/nptl/pthread_join.c
> @@ -21,6 +21,6 @@
>  int
>  __pthread_join (pthread_t threadid, void **thread_return)
>  {
> -  return __pthread_timedjoin_ex (threadid, thread_return, NULL, true);
> +  return __pthread_clockjoin_ex (threadid, thread_return, 0, NULL, true);
>  }
>  weak_alias (__pthread_join, pthread_join)

Maybe a comment stating clockid will be ignored in such case?

> diff --git a/nptl/pthread_join_common.c b/nptl/pthread_join_common.c
> index 9545ae4..1871061 100644
> --- a/nptl/pthread_join_common.c
> +++ b/nptl/pthread_join_common.c
> @@ -36,7 +36,7 @@ cleanup (void *arg)
>     afterwards.  The kernel up to version 3.16.3 does not use the private futex
>     operations for futex wake-up when the clone terminates.  */
>  static int
> -timedwait_tid (pid_t *tidp, const struct timespec *abstime)
> +clockwait_tid (pid_t *tidp, clockid_t clockid, const struct timespec *abstime)
>  {
>    pid_t tid;
>  
> @@ -46,15 +46,17 @@ timedwait_tid (pid_t *tidp, const struct timespec *abstime)
>    /* Repeat until thread terminated.  */
>    while ((tid = *tidp) != 0)
>      {
> -      struct timeval tv;
> +      struct timespec ts;
>        struct timespec rt;
>  
> -      /* Get the current time.  */
> -      __gettimeofday (&tv, NULL);
> +      /* Get the current time. This can only fail if clockid is
> +         invalid. */
> +      if (__glibc_unlikely (__clock_gettime (clockid, &ts)))
> +        return EINVAL;
>  
>        /* Compute relative timeout.  */
> -      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
> -      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
> +      rt.tv_sec = abstime->tv_sec - ts.tv_sec;
> +      rt.tv_nsec = abstime->tv_nsec - ts.tv_nsec;
>        if (rt.tv_nsec < 0)
>          {
>            rt.tv_nsec += 1000000000;

Ok.

> @@ -77,7 +79,8 @@ timedwait_tid (pid_t *tidp, const struct timespec *abstime)
>  }
>  
>  int
> -__pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
> +__pthread_clockjoin_ex (pthread_t threadid, void **thread_return,
> +                        clockid_t clockid,
>  			const struct timespec *abstime, bool block)
>  {
>    struct pthread *pd = (struct pthread *) threadid;
> @@ -122,7 +125,7 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
>  
>    /* BLOCK waits either indefinitely or based on an absolute time.  POSIX also
>       states a cancellation point shall occur for pthread_join, and we use the
> -     same rationale for posix_timedjoin_np.  Both timedwait_tid and the futex
> +     same rationale for posix_timedjoin_np.  Both clockwait_tid and the futex
>       call use the cancellable variant.  */
>    if (block)
>      {
> @@ -132,7 +135,7 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
>        pthread_cleanup_push (cleanup, &pd->joinid);
>  
>        if (abstime != NULL)
> -	result = timedwait_tid (&pd->tid, abstime);
> +	result = clockwait_tid (&pd->tid, clockid, abstime);
>        else
>  	{
>  	  pid_t tid;
> @@ -165,4 +168,4 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
>  
>    return result;
>  }
> -hidden_def (__pthread_timedjoin_ex)
> +hidden_def (__pthread_clockjoin_ex)

Ok.

> diff --git a/nptl/pthread_timedjoin.c b/nptl/pthread_timedjoin.c
> index bb48a1e..1890d1a 100644
> --- a/nptl/pthread_timedjoin.c
> +++ b/nptl/pthread_timedjoin.c
> @@ -22,6 +22,7 @@ int
>  __pthread_timedjoin_np (pthread_t threadid, void **thread_return,
>  			const struct timespec *abstime)
>  {
> -  return __pthread_timedjoin_ex (threadid, thread_return, abstime, true);
> +  return __pthread_clockjoin_ex (threadid, thread_return,
> +                                 CLOCK_REALTIME, abstime, true);
>  }
>  weak_alias (__pthread_timedjoin_np, pthread_timedjoin_np)

Ok.

> diff --git a/nptl/pthread_tryjoin.c b/nptl/pthread_tryjoin.c
> index 28e765b..ac53956 100644
> --- a/nptl/pthread_tryjoin.c
> +++ b/nptl/pthread_tryjoin.c
> @@ -28,5 +28,5 @@ pthread_tryjoin_np (pthread_t threadid, void **thread_return)
>  
>    /* If pd->tid == 0 then lll_wait_tid will not block on futex
>       operation.  */
> -  return __pthread_timedjoin_ex (threadid, thread_return, NULL, false);
> +  return __pthread_clockjoin_ex (threadid, thread_return, 0, NULL, false);
>  }

Maybe a comment stating clockid will be ignored in such case?

> diff --git a/nptl/thrd_join.c b/nptl/thrd_join.c
> index 497d0d2..10d9a72 100644
> --- a/nptl/thrd_join.c
> +++ b/nptl/thrd_join.c
> @@ -22,7 +22,7 @@ int
>  thrd_join (thrd_t thr, int *res)
>  {
>    void *pthread_res;
> -  int err_code = __pthread_timedjoin_ex (thr, &pthread_res, NULL, true);
> +  int err_code = __pthread_clockjoin_ex (thr, &pthread_res, 0, NULL, true);
>    if (res)
>     *res = (int) (uintptr_t) pthread_res;
>  

Ok.

> diff --git a/nptl/tst-join10.c b/nptl/tst-join10.c
> new file mode 100644
> index 0000000..a222dd1
> --- /dev/null
> +++ b/nptl/tst-join10.c
> @@ -0,0 +1,20 @@
> +/* Check if pthread_clockjoin_np is a cancellation entrypoint.
> +   Copyright (C) 2019 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
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#define USE_PTHREAD_CLOCKJOIN_NP_REALTIME 1
> +#include <nptl/tst-join5.c>

Ok.

> diff --git a/nptl/tst-join11.c b/nptl/tst-join11.c
> new file mode 100644
> index 0000000..341588a
> --- /dev/null
> +++ b/nptl/tst-join11.c
> @@ -0,0 +1,21 @@
> +/* Check if pthread_clockjoin_np is a cancellation entrypoint.
> +   Copyright (C) 2019 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
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#define USE_PTHREAD_CLOCKJOIN_NP_REALTIME 1
> +#define WAIT_IN_CHILD 1
> +#include <nptl/tst-join5.c>

Ok.

> diff --git a/nptl/tst-join12.c b/nptl/tst-join12.c
> new file mode 100644
> index 0000000..44592dc
> --- /dev/null
> +++ b/nptl/tst-join12.c
> @@ -0,0 +1,20 @@
> +/* Check if pthread_clockjoin_np is a cancellation entrypoint.
> +   Copyright (C) 2019 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
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#define USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC 1
> +#include <nptl/tst-join5.c>

Ok.

> diff --git a/nptl/tst-join13.c b/nptl/tst-join13.c
> new file mode 100644
> index 0000000..d4e49d5
> --- /dev/null
> +++ b/nptl/tst-join13.c
> @@ -0,0 +1,21 @@
> +/* Check if pthread_clockjoin_np is a cancellation entrypoint.
> +   Copyright (C) 2019 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
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#define USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC 1
> +#define WAIT_IN_CHILD 1
> +#include <nptl/tst-join5.c>

Ok.

> diff --git a/nptl/tst-join3.c b/nptl/tst-join3.c
> index a4ae459..c06e65a 100644
> --- a/nptl/tst-join3.c
> +++ b/nptl/tst-join3.c
> @@ -28,6 +28,8 @@
>  #include <support/xtime.h>
>  
>  
> +#define CLOCK_USE_TIMEDJOIN (-1)
> +
>  static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
>  
>  
> @@ -35,19 +37,23 @@ static void *
>  tf (void *arg)
>  {
>    xpthread_mutex_lock (&lock);
> +  xpthread_mutex_unlock (&lock);
>  

Maybe it would be better to move the unlock after the loop test, 
to mimic how the other unlock does?

>    return (void *) 42l;
>  }
>  
>  
>  static int
> -do_test (void)
> +do_test_clock (clockid_t clockid)
>  {
> +  const clockid_t clockid_for_get =
> +    (clockid == CLOCK_USE_TIMEDJOIN) ? CLOCK_REALTIME : clockid;
> +
>    xpthread_mutex_lock (&lock);
>    pthread_t th = xpthread_create (NULL, tf, NULL);
>  
>    void *status;
> -  struct timespec timeout = timespec_add (xclock_now (CLOCK_REALTIME),
> +  struct timespec timeout = timespec_add (xclock_now (clockid_for_get),
>                                            make_timespec (0, 200000000));
>  

Ok.

>    int val = pthread_timedjoin_np (th, &status, &timeout);
> @@ -57,10 +63,13 @@ do_test (void)
>  
>    while (1)
>      {
> -      timeout = timespec_add (xclock_now (CLOCK_REALTIME),
> +      timeout = timespec_add (xclock_now (clockid_for_get),
>                                make_timespec (0, 200000000));
>  
> -      val = pthread_timedjoin_np (th, &status, &timeout);
> +      if (clockid == CLOCK_USE_TIMEDJOIN)
> +        val = pthread_timedjoin_np (th, &status, &timeout);
> +      else
> +        val = pthread_clockjoin_np (th, &status, clockid, &timeout);
>        if (val == 0)
>  	break;
>  
> @@ -73,4 +82,13 @@ do_test (void)
>    return 0;
>  }
>  
> +static int
> +do_test (void)
> +{
> +  do_test_clock (CLOCK_USE_TIMEDJOIN);
> +  do_test_clock (CLOCK_REALTIME);
> +  do_test_clock (CLOCK_MONOTONIC);
> +  return 0;
> +}
> +
>  #include <support/test-driver.c>

Ok.

> diff --git a/nptl/tst-join5.c b/nptl/tst-join5.c
> index 41cacf1..1ee765c 100644
> --- a/nptl/tst-join5.c
> +++ b/nptl/tst-join5.c
> @@ -24,7 +24,9 @@
>  #include <unistd.h>
>  
>  #include <support/check.h>
> +#include <support/timespec.h>
>  #include <support/xthread.h>
> +#include <support/xtime.h>
>  
>  static void
>  wait_code (void)
> @@ -42,12 +44,18 @@ static pthread_barrier_t b;
>  static int
>  thread_join (pthread_t thread, void **retval)
>  {
> -#ifdef USE_PTHREAD_TIMEDJOIN_NP
> -  struct timespec tv;
> -  TEST_COMPARE (clock_gettime (CLOCK_REALTIME, &tv), 0);
> -  /* Arbitrary large timeout to make it act as pthread_join.  */
> -  tv.tv_sec += 1000;
> -  return pthread_timedjoin_np ((pthread_t) thread, retval, &tv);
> +#if defined USE_PTHREAD_TIMEDJOIN_NP
> +  const struct timespec ts = timespec_add (xclock_now (CLOCK_REALTIME),
> +                                           make_timespec (1000, 0));
> +  return pthread_timedjoin_np ((pthread_t) thread, retval, &ts);
> +#elif defined USE_PTHREAD_CLOCKJOIN_NP_REALTIME
> +  const struct timespec ts = timespec_add (xclock_now (CLOCK_REALTIME),
> +                                           make_timespec (1000, 0));
> +  return pthread_clockjoin_np ((pthread_t) thread, retval, CLOCK_REALTIME, &ts);
> +#elif defined USE_PTHREAD_CLOCKJOIN_NP_MONOTONIC
> +  const struct timespec ts = timespec_add (xclock_now (CLOCK_MONOTONIC),
> +                                           make_timespec (1000, 0));
> +  return pthread_clockjoin_np ((pthread_t) thread, retval, CLOCK_MONOTONIC, &ts);
>  #else
>    return pthread_join ((pthread_t) thread, retval);
>  #endif

There is no need of casts here.

> diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
> index ceb724d..35be74e 100644
> --- a/sysdeps/nptl/pthread.h
> +++ b/sysdeps/nptl/pthread.h
> @@ -263,6 +263,17 @@ extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
>     __THROW.  */
>  extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
>  				 const struct timespec *__abstime);
> +
> +/* Make calling thread wait for termination of the thread TH, but only
> +   until TIMEOUT measured against the clock specified by CLOCKID.  The
> +   exit status of the thread is stored in *THREAD_RETURN, if
> +   THREAD_RETURN is not NULL.
> +
> +   This function is a cancellation point and therefore not marked with
> +   __THROW.  */
> +extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
> +                                 clockid_t clockid,
> +				 const struct timespec *__abstime);
>  #endif
>  
>  /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> index cdc3ad5..e96fe0d 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

OK.

> diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> index e2c8832..4e34197 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
> @@ -251,6 +251,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> index db670ef..01d8712 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
> @@ -32,6 +32,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> index db670ef..01d8712 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
> @@ -32,6 +32,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> index 44eedc7..44383c6 100644
> --- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
> @@ -232,3 +232,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> index 5454761..522356c 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
> @@ -241,6 +241,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> index f9e7821..d38b44f 100644
> --- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
> @@ -249,6 +249,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> index 5be0e0f..8772654 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
> @@ -243,6 +243,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> index db670ef..01d8712 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
> @@ -32,6 +32,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 _IO_flockfile F
>  GLIBC_2.4 _IO_ftrylockfile F
>  GLIBC_2.4 _IO_funlockfile F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> index f9e7821..d38b44f 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
> @@ -249,6 +249,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> index 7bee5b4..300d8de 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> index 7bee5b4..300d8de 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> index e0390a6..68af03b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
> @@ -250,6 +250,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> index e0390a6..68af03b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
> @@ -250,6 +250,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> index 21abc95..6c26192 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> index c410fa8..55f3161 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
> @@ -251,6 +251,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> index a0a8058..475eec2 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
> @@ -242,6 +242,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> index cdc3ad5..e96fe0d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> index aa6f793..94b478e 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
> @@ -234,3 +234,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> index c504fbf..c9c833d 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
> @@ -251,6 +251,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> index 933f202..5bfa892 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
> @@ -243,6 +243,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> index 5454761..522356c 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
> @@ -241,6 +241,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> index 5454761..522356c 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
> @@ -241,6 +241,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> index e2c8832..4e34197 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
> @@ -251,6 +251,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> index 5be0e0f..8772654 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
> @@ -243,6 +243,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> index 87be582..72a9396 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
> @@ -241,6 +241,7 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
>  GLIBC_2.4 pthread_mutex_consistent_np F
>  GLIBC_2.4 pthread_mutex_getprioceiling F
>  GLIBC_2.4 pthread_mutex_setprioceiling F

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> index 5539c4e..6b80eda 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
> @@ -239,3 +239,4 @@ GLIBC_2.30 pthread_mutex_clocklock F
>  GLIBC_2.30 pthread_rwlock_clockrdlock F
>  GLIBC_2.30 pthread_rwlock_clockwrlock F
>  GLIBC_2.30 sem_clockwait F
> +GLIBC_2.31 pthread_clockjoin_np F
> 

Ok.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]