Message ID | 07d1238bd300f9e7e2292ab3fb0346d64e7f263f.1560875584.git-series.mac@mcrowe.com |
---|---|
State | New |
Headers | show |
Series | nptl: Implement POSIX-proposed _clock variants of existing _timed functions | expand |
On 18/06/2019 13:33, Mike Crowe wrote: > The only implementation of futex_supports_exact_relative_timeouts always > returns true. Let's remove it and all its callers. LGTM. > > * 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. Ok. > --- > ChangeLog | 13 +++++++++++++ > nptl/pthread_cond_wait.c | 5 ----- > nptl/pthread_condattr_setclock.c | 5 ----- > sysdeps/nptl/futex-internal.h | 9 +-------- > sysdeps/unix/sysv/linux/futex-internal.h | 8 -------- > 5 files changed, 14 insertions(+), 26 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 984275c..cf07e4d 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,16 @@ > +2019-06-18 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. > + > 2019-05-27 Mike Crowe <mac@mcrowe.com> > > * NEWS: Mention recently-added pthread_cond_clockwait, > diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c > index 558f930..cd98f50 100644 > --- a/nptl/pthread_cond_wait.c > +++ b/nptl/pthread_cond_wait.c > @@ -670,11 +670,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); > } > Ok. > 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)); > Ok. > diff --git a/sysdeps/nptl/futex-internal.h b/sysdeps/nptl/futex-internal.h > index bc29bdb..9baae38 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: Ok. > diff --git a/sysdeps/unix/sysv/linux/futex-internal.h b/sysdeps/unix/sysv/linux/futex-internal.h > index 03312d6..30707e7 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) > Ok.
diff --git a/ChangeLog b/ChangeLog index 984275c..cf07e4d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2019-06-18 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. + 2019-05-27 Mike Crowe <mac@mcrowe.com> * NEWS: Mention recently-added pthread_cond_clockwait, diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c index 558f930..cd98f50 100644 --- a/nptl/pthread_cond_wait.c +++ b/nptl/pthread_cond_wait.c @@ -670,11 +670,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); } 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 bc29bdb..9baae38 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 03312d6..30707e7 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)