diff options
author | Mike Crowe <mac@mcrowe.com> | 2019-06-24 20:18:00 +0000 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-07-12 13:36:25 +0000 |
commit | 1ff1373b3302e9e095dc4fd4d371451c00190780 (patch) | |
tree | a2674e19f74165d5825c272dc7f4838c86d65ef8 | |
parent | 65dd7e9ce36ca8485a68ed41ac731188b6473dd2 (diff) | |
download | glibc-1ff1373b3302e9e095dc4fd4d371451c00190780.zip glibc-1ff1373b3302e9e095dc4fd4d371451c00190780.tar.gz glibc-1ff1373b3302e9e095dc4fd4d371451c00190780.tar.bz2 |
nptl: Remove futex_supports_exact_relative_timeouts
The only implementation of futex_supports_exact_relative_timeouts always
returns true. Let's remove it and all its callers.
* nptl/pthread_cond_wait.c: (__pthread_cond_clockwait): Remove code
that is only useful if futex_supports_exact_relative_timeouts ()
returns false.
* nptl/pthread_condattr_setclock.c: (pthread_condattr_setclock):
Likewise.
* sysdeps/nptl/futex-internal.h: Remove comment about relative
timeouts potentially being imprecise since it's no longer true.
Remove declaration of futex_supports_exact_relative_timeouts.
* sysdeps/unix/sysv/linux/futex-internal.h: Remove implementation
of futex_supports_exact_relative_timeouts.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | nptl/pthread_cond_wait.c | 5 | ||||
-rw-r--r-- | nptl/pthread_condattr_setclock.c | 5 | ||||
-rw-r--r-- | sysdeps/nptl/futex-internal.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/futex-internal.h | 8 |
5 files changed, 12 insertions, 26 deletions
@@ -1,5 +1,16 @@ 2019-07-12 Mike Crowe <mac@mcrowe.com> + * nptl/pthread_cond_wait.c: (__pthread_cond_clockwait): Remove code + that is only useful if futex_supports_exact_relative_timeouts () + returns false. + * nptl/pthread_condattr_setclock.c: (pthread_condattr_setclock): + Likewise. + * sysdeps/nptl/futex-internal.h: Remove comment about relative + timeouts potentially being imprecise since it's no longer true. + Remove declaration of futex_supports_exact_relative_timeouts. + * sysdeps/unix/sysv/linux/futex-internal.h: Remove implementation + of futex_supports_exact_relative_timeouts. + * NEWS: Mention recently-added pthread_cond_clockwait, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock and sem_clockwait functions. diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c index 68ec754..450bf66b 100644 --- a/nptl/pthread_cond_wait.c +++ b/nptl/pthread_cond_wait.c @@ -674,11 +674,6 @@ __pthread_cond_clockwait (pthread_cond_t *cond, pthread_mutex_t *mutex, if (!futex_abstimed_supported_clockid (clockid)) return EINVAL; - /* If we do not support waiting using CLOCK_MONOTONIC, return an error. */ - if (clockid == CLOCK_MONOTONIC - && !futex_supports_exact_relative_timeouts ()) - return EINVAL; - return __pthread_cond_wait_common (cond, mutex, clockid, abstime); } weak_alias (__pthread_cond_clockwait, pthread_cond_clockwait); diff --git a/nptl/pthread_condattr_setclock.c b/nptl/pthread_condattr_setclock.c index 641a041..ac91923 100644 --- a/nptl/pthread_condattr_setclock.c +++ b/nptl/pthread_condattr_setclock.c @@ -33,11 +33,6 @@ pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t clock_id) in the pthread_cond_t structure needs to be adjusted. */ return EINVAL; - /* If we do not support waiting using CLOCK_MONOTONIC, return an error. */ - if (clock_id == CLOCK_MONOTONIC - && !futex_supports_exact_relative_timeouts()) - return ENOTSUP; - /* Make sure the value fits in the bits we reserved. */ assert (clock_id < (1 << COND_CLOCK_BITS)); diff --git a/sysdeps/nptl/futex-internal.h b/sysdeps/nptl/futex-internal.h index f29d6d4..dff2317 100644 --- a/sysdeps/nptl/futex-internal.h +++ b/sysdeps/nptl/futex-internal.h @@ -51,8 +51,7 @@ Both absolute and relative timeouts can be used. An absolute timeout expires when the given specific point in time on the specified clock passes, or when it already has passed. A relative timeout expires when - the given duration of time on the CLOCK_MONOTONIC clock passes. Relative - timeouts may be imprecise (see futex_supports_exact_relative_timeouts). + the given duration of time on the CLOCK_MONOTONIC clock passes. Due to POSIX requirements on when synchronization data structures such as mutexes or semaphores can be destroyed and due to the futex design @@ -81,12 +80,6 @@ static __always_inline int futex_supports_pshared (int pshared); -/* Returns true if relative timeouts are robust to concurrent changes to the - system clock. If this returns false, relative timeouts can still be used - but might be effectively longer or shorter than requested. */ -static __always_inline bool -futex_supports_exact_relative_timeouts (void); - /* Atomically wrt other futex operations on the same futex, this blocks iff the value *FUTEX_WORD matches the expected value. This is semantically equivalent to: diff --git a/sysdeps/unix/sysv/linux/futex-internal.h b/sysdeps/unix/sysv/linux/futex-internal.h index 299d248..980b798 100644 --- a/sysdeps/unix/sysv/linux/futex-internal.h +++ b/sysdeps/unix/sysv/linux/futex-internal.h @@ -46,14 +46,6 @@ futex_supports_pshared (int pshared) return EINVAL; } -/* The Linux kernel supports relative timeouts measured against the - CLOCK_MONOTONIC clock. */ -static __always_inline bool -futex_supports_exact_relative_timeouts (void) -{ - return true; -} - /* See sysdeps/nptl/futex-internal.h for details. */ static __always_inline int futex_wait (unsigned int *futex_word, unsigned int expected, int private) |