htl: move sem_{clockwait, timedwait, wait, trywait} into libc.

Message-ID: <20250817104023.91919-7-gfleury@disroot.org>
This commit is contained in:
gfleury 2025-08-17 12:40:21 +02:00 committed by Samuel Thibault
parent 795f5f2a8b
commit f5a43420e2
12 changed files with 66 additions and 19 deletions

View File

@ -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 \

View File

@ -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 {

View File

@ -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,

View File

@ -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. */

View File

@ -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

View File

@ -25,6 +25,7 @@
#include <sysdep-cancel.h>
#include <pt-internal.h>
#include <shlib-compat.h>
#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

View File

@ -21,6 +21,7 @@
#include <hurd.h>
#include <pt-internal.h>
#include <shlib-compat.h>
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

View File

@ -18,6 +18,7 @@
#include <semaphore.h>
#include <pt-internal.h>
#include <shlib-compat.h>
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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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