From patchwork Sun Aug 17 23:26:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 118503 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 C15FE3858C56 for ; Sun, 17 Aug 2025 23:30:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C15FE3858C56 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 557E13858408 for ; Sun, 17 Aug 2025 23:26:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 557E13858408 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 557E13858408 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=1755473190; cv=none; b=BeN3jhiun2KV/+Nm9rvjJeqlmg5chyyua5+f9LILK1Y7JeHTl6w14x0uwZOea0KlOkwNJZLa5ZbfjHxbYRg+u9llJ45rzYOMa7QwCTewcdeY8MQBGyABhVOktUS54lTxpB352vjMNo8irXLu1K9FVU2lpIDvgrU19eoXRVxGk48= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1755473190; c=relaxed/simple; bh=20kEt48q8Jn+yjgFigdB0DUIu5jpWf4k8u6NXKqmAVs=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=EYIQrMs0XMQuUlNAAShWQWIwS7fkELpkA706PHvUPUk/DjoE5AA6dnG8bSHpUmZZC0yokt5+VOA1QEUcNgVJwoUwYD4Ccs7kGjnX5keXFvFIZaDkF91lwRsYKIAYGQETGQsDsfiAN8D4L1DYRjYE750zOTlktjU7MeENTIt4a1M= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 557E13858408 Received: from localhost (localhost [127.0.0.1]) by sonata.ens-lyon.org (Postfix) with ESMTP id 319DAA1BDE; Mon, 18 Aug 2025 01:26:27 +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 JMIN8Q2LPd93; Mon, 18 Aug 2025 01:26:27 +0200 (CEST) Received: from begin (97.22.205.77.rev.sfr.net [77.205.22.97]) (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 AF11EA0512; Mon, 18 Aug 2025 01:26:26 +0200 (CEST) Received: from samy by begin with local (Exim 4.98.2) (envelope-from ) id 1unmld-00000002wCK-3WjK; Mon, 18 Aug 2025 01:26:25 +0200 From: Samuel Thibault To: libc-alpha@sourceware.org Cc: gfleury , commit-hurd@gnu.org Subject: [hurd, commited 6/7] htl: move sem_{clockwait, timedwait, wait, trywait} into libc. Date: Mon, 18 Aug 2025 01:26:23 +0200 Message-ID: <20250817232624.700329-7-samuel.thibault@ens-lyon.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250817232624.700329-1-samuel.thibault@ens-lyon.org> References: <20250817232624.700329-1-samuel.thibault@ens-lyon.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.9 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: <20250817104023.91919-7-gfleury@disroot.org> --- htl/Makefile | 8 ++++---- htl/Versions | 13 ++++++++++--- hurd/hurdlock.c | 1 + hurd/hurdlock.h | 1 + sysdeps/htl/include/semaphore.h | 11 +++++++++++ sysdeps/htl/sem-timedwait.c | 14 ++++++++++++-- sysdeps/htl/sem-trywait.c | 7 ++++++- sysdeps/htl/sem-wait.c | 6 +++++- 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 ---- 12 files changed, 66 insertions(+), 19 deletions(-) diff --git a/htl/Makefile b/htl/Makefile index b995d1a4b3..56b29e6bfd 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -34,11 +34,7 @@ libpthread-routines := \ pt-spin \ pt-getname-np \ pt-setname-np \ - sem-timedwait \ - sem-trywait \ sem_unlink \ - sem-wait \ - sem-waitfast \ cancellation \ cthreads-compat \ herrno \ @@ -208,6 +204,10 @@ routines := \ sem-getvalue \ sem-init \ sem-post \ + sem-timedwait \ + sem-trywait \ + sem-wait \ + sem-waitfast \ sem_close \ sem_open \ sem_routines \ diff --git a/htl/Versions b/htl/Versions index ff1d5b9348..c22b1b07f3 100644 --- a/htl/Versions +++ b/htl/Versions @@ -107,6 +107,9 @@ libc { sem_init; sem_open; sem_post; + sem_timedwait; + sem_trywait; + sem_wait; } GLIBC_2.21 { @@ -147,6 +150,8 @@ libc { pthread_rwlock_clockrdlock; pthread_rwlock_clockwrlock; pthread_timedjoin_np; pthread_tryjoin_np; + + sem_clockwait; } GLIBC_2.41 { @@ -225,12 +230,16 @@ libc { pthread_timedjoin_np; pthread_tryjoin_np; pthread_yield; + sem_clockwait; sem_close; sem_destroy; sem_getvalue; sem_init; sem_open; sem_post; + sem_timedwait; + sem_trywait; + sem_wait; } GLIBC_PRIVATE { @@ -323,7 +332,7 @@ libpthread { pthread_create; - sem_timedwait; sem_trywait; sem_unlink; sem_wait; + sem_unlink; pthread_spin_destroy; pthread_spin_init; pthread_spin_lock; pthread_spin_trylock; pthread_spin_unlock; @@ -343,8 +352,6 @@ libpthread { call_once; cnd_broadcast; cnd_destroy; cnd_init; cnd_signal; cnd_timedwait; cnd_wait; tss_create; tss_delete; tss_get; tss_set; - - sem_clockwait; } GLIBC_2.40 { diff --git a/hurd/hurdlock.c b/hurd/hurdlock.c index c771662e84..1cb6981ac2 100644 --- a/hurd/hurdlock.c +++ b/hurd/hurdlock.c @@ -64,6 +64,7 @@ __lll_abstimed_wait_intr (void *ptr, int val, int mlsec = compute_reltime (tsp, clk); return mlsec < 0 ? KERN_TIMEDOUT : __lll_timed_wait_intr (ptr, val, mlsec, flags); } +libc_hidden_def (__lll_abstimed_wait_intr) int __lll_abstimed_xwait (void *ptr, int lo, int hi, diff --git a/hurd/hurdlock.h b/hurd/hurdlock.h index 0cfccc562c..532a07d5f4 100644 --- a/hurd/hurdlock.h +++ b/hurd/hurdlock.h @@ -58,6 +58,7 @@ extern int __lll_abstimed_wait (void *__ptr, int __val, /* Interruptible version. */ extern int __lll_abstimed_wait_intr (void *__ptr, int __val, const struct timespec *__tsp, int __flags, int __clk); +libc_hidden_proto (__lll_abstimed_wait_intr) /* Same as 'lll_xwait', but only block until TSP elapses, using clock CLK. */ diff --git a/sysdeps/htl/include/semaphore.h b/sysdeps/htl/include/semaphore.h index 5e5d3c18e9..b91b9b7077 100644 --- a/sysdeps/htl/include/semaphore.h +++ b/sysdeps/htl/include/semaphore.h @@ -4,6 +4,17 @@ #ifndef _ISOMAC extern __typeof (sem_post) __sem_post; libc_hidden_proto (__sem_post) + +extern int __sem_clockwait (sem_t *__sem, + clockid_t clock, + const struct timespec *__abstime); +libc_hidden_proto (__sem_clockwait) +extern int __sem_timedwait (sem_t *__sem, + const struct timespec *__abstime); +libc_hidden_proto (__sem_timedwait) + +extern int __sem_trywait (sem_t *__sem); +libc_hidden_proto (__sem_trywait) #endif #endif diff --git a/sysdeps/htl/sem-timedwait.c b/sysdeps/htl/sem-timedwait.c index 4931dde5ce..8f2b4d3f8b 100644 --- a/sysdeps/htl/sem-timedwait.c +++ b/sysdeps/htl/sem-timedwait.c @@ -25,6 +25,7 @@ #include #include +#include #if !__HAVE_64B_ATOMICS static void @@ -196,7 +197,12 @@ __sem_clockwait (sem_t *sem, clockid_t clockid, { return __sem_timedwait_internal (sem, clockid, timeout); } -weak_alias (__sem_clockwait, sem_clockwait); + +libc_hidden_def (__sem_clockwait) +versioned_symbol (libc, __sem_clockwait, sem_clockwait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_32, GLIBC_2_43) +compat_symbol (libpthread, __sem_clockwait, sem_clockwait, GLIBC_2_32); +#endif int __sem_timedwait (sem_t *restrict sem, const struct timespec *restrict timeout) @@ -204,4 +210,8 @@ __sem_timedwait (sem_t *restrict sem, const struct timespec *restrict timeout) return __sem_timedwait_internal (sem, CLOCK_REALTIME, timeout); } -weak_alias (__sem_timedwait, sem_timedwait); +libc_hidden_def (__sem_timedwait) +versioned_symbol (libc, __sem_timedwait, sem_timedwait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_timedwait, sem_timedwait, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/sem-trywait.c b/sysdeps/htl/sem-trywait.c index 38846bf9a3..0d1e9cd5a8 100644 --- a/sysdeps/htl/sem-trywait.c +++ b/sysdeps/htl/sem-trywait.c @@ -21,6 +21,7 @@ #include #include +#include int __sem_trywait (sem_t *sem) @@ -33,4 +34,8 @@ __sem_trywait (sem_t *sem) return __hurd_fail (EAGAIN); } -weak_alias (__sem_trywait, sem_trywait); +libc_hidden_def (__sem_trywait) +versioned_symbol (libc, __sem_trywait, sem_trywait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_trywait, sem_trywait, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/sem-wait.c b/sysdeps/htl/sem-wait.c index 97c873dc8d..c2fc7a93f1 100644 --- a/sysdeps/htl/sem-wait.c +++ b/sysdeps/htl/sem-wait.c @@ -18,6 +18,7 @@ #include #include +#include extern int __sem_timedwait_internal (sem_t *restrict sem, clockid_t clockid, @@ -29,4 +30,7 @@ __sem_wait (sem_t *sem) return __sem_timedwait_internal (sem, CLOCK_REALTIME, 0); } -strong_alias (__sem_wait, sem_wait); +versioned_symbol (libc, __sem_wait, sem_wait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_wait, sem_wait, GLIBC_2_12); +#endif diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 661bbf9532..8eabddcec6 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -134,6 +134,9 @@ GLIBC_2.12 sem_getvalue F GLIBC_2.12 sem_init F GLIBC_2.12 sem_open F GLIBC_2.12 sem_post F +GLIBC_2.12 sem_timedwait F +GLIBC_2.12 sem_trywait F +GLIBC_2.12 sem_wait F GLIBC_2.13 __fentry__ F GLIBC_2.14 syncfs F GLIBC_2.15 __fdelt_chk F @@ -2333,6 +2336,7 @@ 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 sem_clockwait F GLIBC_2.32 sigabbrev_np F GLIBC_2.32 sigdescr_np F GLIBC_2.32 strerrordesc_np F @@ -2672,12 +2676,16 @@ 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.43 sem_clockwait F GLIBC_2.43 sem_close F GLIBC_2.43 sem_destroy F GLIBC_2.43 sem_getvalue F GLIBC_2.43 sem_init F GLIBC_2.43 sem_open F GLIBC_2.43 sem_post F +GLIBC_2.43 sem_timedwait F +GLIBC_2.43 sem_trywait F +GLIBC_2.43 sem_wait F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index 07dd75378e..483d792727 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -24,10 +24,7 @@ GLIBC_2.12 pthread_spin_init F GLIBC_2.12 pthread_spin_lock F GLIBC_2.12 pthread_spin_trylock F GLIBC_2.12 pthread_spin_unlock F -GLIBC_2.12 sem_timedwait F -GLIBC_2.12 sem_trywait F GLIBC_2.12 sem_unlink F -GLIBC_2.12 sem_wait F GLIBC_2.2.6 _IO_flockfile F GLIBC_2.2.6 _IO_ftrylockfile F GLIBC_2.2.6 _IO_funlockfile F @@ -48,7 +45,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 sem_clockwait F GLIBC_2.32 thrd_create F GLIBC_2.32 thrd_detach F GLIBC_2.32 thrd_exit F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 6fa0e6f01a..de42acab3d 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -1759,12 +1759,16 @@ GLIBC_2.38 seed48 F GLIBC_2.38 seed48_r F GLIBC_2.38 seekdir F GLIBC_2.38 select F +GLIBC_2.38 sem_clockwait F GLIBC_2.38 sem_close F GLIBC_2.38 sem_destroy F GLIBC_2.38 sem_getvalue F GLIBC_2.38 sem_init F GLIBC_2.38 sem_open F GLIBC_2.38 sem_post F +GLIBC_2.38 sem_timedwait F +GLIBC_2.38 sem_trywait F +GLIBC_2.38 sem_wait F GLIBC_2.38 semctl F GLIBC_2.38 semget F GLIBC_2.38 semop F @@ -2353,12 +2357,16 @@ 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.43 sem_clockwait F GLIBC_2.43 sem_close F GLIBC_2.43 sem_destroy F GLIBC_2.43 sem_getvalue F GLIBC_2.43 sem_init F GLIBC_2.43 sem_open F GLIBC_2.43 sem_post F +GLIBC_2.43 sem_timedwait F +GLIBC_2.43 sem_trywait F +GLIBC_2.43 sem_wait F HURD_CTHREADS_0.3 __cthread_getspecific F HURD_CTHREADS_0.3 __cthread_keycreate F HURD_CTHREADS_0.3 __cthread_setspecific F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index 38cf0d2595..4c9ba3b7d5 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -43,11 +43,7 @@ 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 sem_clockwait F -GLIBC_2.38 sem_timedwait F -GLIBC_2.38 sem_trywait F GLIBC_2.38 sem_unlink F -GLIBC_2.38 sem_wait F GLIBC_2.38 thrd_create F GLIBC_2.38 thrd_detach F GLIBC_2.38 thrd_exit F