From patchwork Sat Aug 16 00:14:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 118451 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2C3533858C62 for ; Sat, 16 Aug 2025 00:27:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2C3533858C62 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138]) by sourceware.org (Postfix) with ESMTPS id 778B33858D1E for ; Sat, 16 Aug 2025 00:14:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 778B33858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ens-lyon.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bounce.ens-lyon.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 778B33858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.77.166.138 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1755303266; cv=none; b=QI3eUaY9mKkvKV5VtoO5lR109otLELcaSNnao4D/XbM/W28xDXaDnY41FojOG80r5hCZCwp/y2KJOOdfXe046B/wrtrBdW7019ad8MsIvjg4UDcK4quWRHb1iQOjEFx5cf/C1MMMWj2xFqAnXj5DwPviwyVtIR7rDrJJVoNnLFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1755303266; c=relaxed/simple; bh=igmGSTEPllR/UESFA2DvvoKB82ZQtOTpKWORYlophB0=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=GfViPxWILcD0nW/Awbf8dHUiC7anR7KwNegKYw+5AgmpMIBtb4MOlMx2JwTSejS/IuWgNm8mCBb5KPV7VOiR6UmGn5ZB8pYYFULY9laD37pHvbCo/Fsgn/hFn7tplBJvvpZvrBfkgYjpFVQs76IoaJAZT/tphN27WKQWPdp3aYA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 778B33858D1E Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id B2B73A5E00; Sat, 16 Aug 2025 02:14:08 +0200 (CEST) Received: from sonata.ens-lyon.org ([127.0.0.1]) by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H6z8ZFMy0HBg; Sat, 16 Aug 2025 02:14:08 +0200 (CEST) Received: from begin (165.21.205.77.rev.sfr.net [77.205.21.165]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by sonata.ens-lyon.org (Postfix) with ESMTPSA id C75E8A5E02; Sat, 16 Aug 2025 02:14:07 +0200 (CEST) Received: from samy by begin with local (Exim 4.98.2) (envelope-from ) id 1un4Yg-00000000Wyd-3hCJ; Sat, 16 Aug 2025 02:14:06 +0200 From: Samuel Thibault To: libc-alpha@sourceware.org Cc: gfleury , commit-hurd@gnu.org Subject: [hurd, commited 17/19] htl: move pthread_{join, clockjoin_np, timedjoin_np, tryjoin_np} into libc. Date: Sat, 16 Aug 2025 02:14:03 +0200 Message-ID: <20250816001405.126154-18-samuel.thibault@ens-lyon.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250816001405.126154-1-samuel.thibault@ens-lyon.org> References: <20250816001405.126154-1-samuel.thibault@ens-lyon.org> MIME-Version: 1.0 X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org From: gfleury Message-ID: <20250815181500.107433-18-gfleury@disroot.org> --- htl/Makefile | 2 +- htl/Versions | 12 ++++++--- htl/pt-join.c | 30 ++++++++++++++++++--- sysdeps/htl/pthreadP.h | 10 +++++++ sysdeps/mach/hurd/i386/libc.abilist | 8 ++++++ sysdeps/mach/hurd/i386/libpthread.abilist | 4 --- sysdeps/mach/hurd/x86_64/libc.abilist | 8 ++++++ sysdeps/mach/hurd/x86_64/libpthread.abilist | 4 --- 8 files changed, 61 insertions(+), 17 deletions(-) diff --git a/htl/Makefile b/htl/Makefile index 8530098a71..ab78372da7 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -27,7 +27,6 @@ LCLHDRS := libpthread-routines := \ pt-create \ pt-initialize \ - pt-join \ pt-spin-inlines \ pt-hurd-cond-wait \ pt-hurd-cond-timedwait \ @@ -147,6 +146,7 @@ routines := \ pt-getschedparam \ pt-getspecific \ pt-init-specific \ + pt-join \ pt-key-create \ pt-key-delete \ pt-kill \ diff --git a/htl/Versions b/htl/Versions index 44af006b74..1c7e82c1d3 100644 --- a/htl/Versions +++ b/htl/Versions @@ -55,6 +55,7 @@ libc { pthread_detach; pthread_getattr_np; pthread_getconcurrency; + pthread_join; pthread_key_create; pthread_key_delete; pthread_kill; @@ -129,6 +130,7 @@ libc { thrd_current; thrd_equal; thrd_sleep; thrd_yield; pthread_cond_clockwait; + pthread_clockjoin_np; pthread_mutex_clocklock; @@ -138,6 +140,7 @@ libc { pthread_mutexattr_setrobust; pthread_mutexattr_setrobust_np; pthread_rwlock_clockrdlock; pthread_rwlock_clockwrlock; + pthread_timedjoin_np; pthread_tryjoin_np; } GLIBC_2.41 { @@ -202,15 +205,19 @@ libc { GLIBC_2.43 { pthread_cancel; + pthread_clockjoin_np; pthread_detach; pthread_getattr_np; pthread_getconcurrency; pthread_getcpuclockid; + pthread_join; pthread_kill; pthread_mutex_transfer_np; pthread_setconcurrency; pthread_setschedprio; pthread_testcancel; + pthread_timedjoin_np; + pthread_tryjoin_np; pthread_yield; } @@ -248,6 +255,7 @@ libc { __pthread_destroy_specific; __pthread_exit; __pthread_getspecific; + __pthread_join; __pthread_key_delete; __pthread_max_threads; __pthread_mutex_checklocked; @@ -301,8 +309,6 @@ libpthread { pthread_create; - pthread_join; - sem_close; sem_destroy; sem_getvalue; sem_init; sem_open; sem_post; sem_timedwait; sem_trywait; sem_unlink; sem_wait; @@ -325,8 +331,6 @@ libpthread { cnd_broadcast; cnd_destroy; cnd_init; cnd_signal; cnd_timedwait; cnd_wait; tss_create; tss_delete; tss_get; tss_set; - pthread_tryjoin_np; pthread_timedjoin_np; pthread_clockjoin_np; - sem_clockwait; } diff --git a/htl/pt-join.c b/htl/pt-join.c index 4e4798a476..7a8da01803 100644 --- a/htl/pt-join.c +++ b/htl/pt-join.c @@ -21,6 +21,8 @@ #include #include +#include +#include /* Make calling thread wait for termination of thread THREAD. Return the exit status of the thread in *STATUS. */ @@ -96,14 +98,24 @@ __pthread_join (pthread_t thread, void **status) { return __pthread_join_common (thread, status, 0, CLOCK_REALTIME, NULL); } -weak_alias (__pthread_join, pthread_join); +libc_hidden_def (__pthread_join) +versioned_symbol (libc, __pthread_join, pthread_join, GLIBC_2_43); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libc, __pthread_join, pthread_join, GLIBC_2_12); +#endif int __pthread_tryjoin_np (pthread_t thread, void **status) { return __pthread_join_common (thread, status, 1, CLOCK_REALTIME, NULL); } -weak_alias (__pthread_tryjoin_np, pthread_tryjoin_np); +libc_hidden_def (__pthread_tryjoin_np) +versioned_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_43); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_32, GLIBC_2_43) +compat_symbol (libc, __pthread_tryjoin_np, pthread_tryjoin_np, GLIBC_2_32); +#endif int __pthread_timedjoin_np (pthread_t thread, void **status, @@ -111,7 +123,12 @@ __pthread_timedjoin_np (pthread_t thread, void **status, { return __pthread_join_common (thread, status, 0, CLOCK_REALTIME, abstime); } -weak_alias (__pthread_timedjoin_np, pthread_timedjoin_np); +libc_hidden_def (__pthread_timedjoin_np) +versioned_symbol (libc, __pthread_timedjoin_np, pthread_timedjoin_np, GLIBC_2_43); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_32, GLIBC_2_43) +compat_symbol (libc, __pthread_timedjoin_np, pthread_timedjoin_np, GLIBC_2_32); +#endif int __pthread_clockjoin_np (pthread_t thread, void **status, @@ -120,4 +137,9 @@ __pthread_clockjoin_np (pthread_t thread, void **status, { return __pthread_join_common (thread, status, 0, clockid, abstime); } -weak_alias (__pthread_clockjoin_np, pthread_clockjoin_np); +libc_hidden_def (__pthread_clockjoin_np) +versioned_symbol (libc, __pthread_clockjoin_np, pthread_clockjoin_np, GLIBC_2_43); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_32, GLIBC_2_43) +compat_symbol (libc, __pthread_clockjoin_np, pthread_clockjoin_np, GLIBC_2_32); +#endif diff --git a/sysdeps/htl/pthreadP.h b/sysdeps/htl/pthreadP.h index e0f0f7d45d..9273a5885f 100644 --- a/sysdeps/htl/pthreadP.h +++ b/sysdeps/htl/pthreadP.h @@ -184,6 +184,16 @@ libc_hidden_proto (__pthread_detach) void __pthread_exit (void *value) __attribute__ ((__noreturn__)); libc_hidden_proto (__pthread_exit) int __pthread_join (pthread_t, void **); +libc_hidden_proto (__pthread_join) +int __pthread_tryjoin_np (pthread_t __th, void **__thread_return); +libc_hidden_proto (__pthread_tryjoin_np) +int __pthread_timedjoin_np (pthread_t __th, void **__thread_return, + const struct timespec *__abstime); +libc_hidden_proto (__pthread_timedjoin_np) +int __pthread_clockjoin_np (pthread_t __th, void **__thread_return, + clockid_t __clockid, + const struct timespec *__abstime); +libc_hidden_proto (__pthread_clockjoin_np) int __cthread_keycreate (__cthread_key_t *); int __cthread_getspecific (__cthread_key_t, void **); int __cthread_setspecific (__cthread_key_t, void *); diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 2ec557b26d..1e5454818a 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -81,6 +81,7 @@ GLIBC_2.12 pthread_getconcurrency F GLIBC_2.12 pthread_getcpuclockid F GLIBC_2.12 pthread_getschedparam F GLIBC_2.12 pthread_getspecific F +GLIBC_2.12 pthread_join F GLIBC_2.12 pthread_key_create F GLIBC_2.12 pthread_key_delete F GLIBC_2.12 pthread_kill F @@ -2313,6 +2314,7 @@ GLIBC_2.30 twalk_r F GLIBC_2.32 __libc_single_threaded D 0x1 GLIBC_2.32 mach_print F GLIBC_2.32 mremap F +GLIBC_2.32 pthread_clockjoin_np F GLIBC_2.32 pthread_cond_clockwait F GLIBC_2.32 pthread_mutex_clocklock F GLIBC_2.32 pthread_mutex_consistent F @@ -2323,6 +2325,8 @@ GLIBC_2.32 pthread_mutexattr_setrobust F GLIBC_2.32 pthread_mutexattr_setrobust_np F GLIBC_2.32 pthread_rwlock_clockrdlock F GLIBC_2.32 pthread_rwlock_clockwrlock F +GLIBC_2.32 pthread_timedjoin_np F +GLIBC_2.32 pthread_tryjoin_np F GLIBC_2.32 sigabbrev_np F GLIBC_2.32 sigdescr_np F GLIBC_2.32 strerrordesc_np F @@ -2648,15 +2652,19 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 pthread_cancel F +GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_detach F GLIBC_2.43 pthread_getattr_np F GLIBC_2.43 pthread_getconcurrency F GLIBC_2.43 pthread_getcpuclockid F +GLIBC_2.43 pthread_join F GLIBC_2.43 pthread_kill F GLIBC_2.43 pthread_mutex_transfer_np F GLIBC_2.43 pthread_setconcurrency F GLIBC_2.43 pthread_setschedprio F GLIBC_2.43 pthread_testcancel F +GLIBC_2.43 pthread_timedjoin_np F +GLIBC_2.43 pthread_tryjoin_np F GLIBC_2.43 pthread_yield F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index 3f3c17c15e..8a056c89ff 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -19,7 +19,6 @@ GLIBC_2.12 ftrylockfile F GLIBC_2.12 funlockfile F GLIBC_2.12 pthread_atfork F GLIBC_2.12 pthread_create F -GLIBC_2.12 pthread_join F GLIBC_2.12 pthread_spin_destroy F GLIBC_2.12 pthread_spin_init F GLIBC_2.12 pthread_spin_lock F @@ -55,9 +54,6 @@ GLIBC_2.32 mtx_lock F GLIBC_2.32 mtx_timedlock F GLIBC_2.32 mtx_trylock F GLIBC_2.32 mtx_unlock F -GLIBC_2.32 pthread_clockjoin_np F -GLIBC_2.32 pthread_timedjoin_np F -GLIBC_2.32 pthread_tryjoin_np F GLIBC_2.32 sem_clockwait F GLIBC_2.32 thrd_create F GLIBC_2.32 thrd_detach F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 2e7e00773a..1bf1bcabe4 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -1542,6 +1542,7 @@ GLIBC_2.38 pthread_barrierattr_getpshared F GLIBC_2.38 pthread_barrierattr_init F GLIBC_2.38 pthread_barrierattr_setpshared F GLIBC_2.38 pthread_cancel F +GLIBC_2.38 pthread_clockjoin_np F GLIBC_2.38 pthread_cond_broadcast F GLIBC_2.38 pthread_cond_clockwait F GLIBC_2.38 pthread_cond_destroy F @@ -1563,6 +1564,7 @@ GLIBC_2.38 pthread_getconcurrency F GLIBC_2.38 pthread_getcpuclockid F GLIBC_2.38 pthread_getschedparam F GLIBC_2.38 pthread_getspecific F +GLIBC_2.38 pthread_join F GLIBC_2.38 pthread_key_create F GLIBC_2.38 pthread_key_delete F GLIBC_2.38 pthread_kill F @@ -1617,6 +1619,8 @@ GLIBC_2.38 pthread_setschedprio F GLIBC_2.38 pthread_setspecific F GLIBC_2.38 pthread_sigmask F GLIBC_2.38 pthread_testcancel F +GLIBC_2.38 pthread_timedjoin_np F +GLIBC_2.38 pthread_tryjoin_np F GLIBC_2.38 pthread_yield F GLIBC_2.38 ptrace F GLIBC_2.38 ptsname F @@ -2329,15 +2333,19 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 pthread_cancel F +GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_detach F GLIBC_2.43 pthread_getattr_np F GLIBC_2.43 pthread_getconcurrency F GLIBC_2.43 pthread_getcpuclockid F +GLIBC_2.43 pthread_join F GLIBC_2.43 pthread_kill F GLIBC_2.43 pthread_mutex_transfer_np F GLIBC_2.43 pthread_setconcurrency F GLIBC_2.43 pthread_setschedprio F GLIBC_2.43 pthread_testcancel F +GLIBC_2.43 pthread_timedjoin_np F +GLIBC_2.43 pthread_tryjoin_np F GLIBC_2.43 pthread_yield F HURD_CTHREADS_0.3 __cthread_getspecific F HURD_CTHREADS_0.3 __cthread_keycreate F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index 6dfca3f44d..5caa7bcfb9 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -35,18 +35,14 @@ GLIBC_2.38 mtx_lock F GLIBC_2.38 mtx_timedlock F GLIBC_2.38 mtx_trylock F GLIBC_2.38 mtx_unlock F -GLIBC_2.38 pthread_clockjoin_np F GLIBC_2.38 pthread_create F GLIBC_2.38 pthread_hurd_cond_timedwait_np F GLIBC_2.38 pthread_hurd_cond_wait_np F -GLIBC_2.38 pthread_join F GLIBC_2.38 pthread_spin_destroy F GLIBC_2.38 pthread_spin_init F GLIBC_2.38 pthread_spin_lock F GLIBC_2.38 pthread_spin_trylock F GLIBC_2.38 pthread_spin_unlock F -GLIBC_2.38 pthread_timedjoin_np F -GLIBC_2.38 pthread_tryjoin_np F GLIBC_2.38 sem_clockwait F GLIBC_2.38 sem_close F GLIBC_2.38 sem_destroy F