Message ID | 20201123195256.3336217-8-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | [01/13] linux: Remove unused internal futex functions | expand |
Hi Adhemerval, > Checked with x86_64-linux-gnu and i686-linux-gnu. > --- > nptl/Makefile | 1 - > nptl/lll_timedlock_wait.c | 62 > ------------------------------------- nptl/pthread_mutex_lock.c | > 4 +-- sysdeps/nptl/lowlevellock.h | 32 ------------------- > 4 files changed, 2 insertions(+), 97 deletions(-) > delete mode 100644 nptl/lll_timedlock_wait.c > > diff --git a/nptl/Makefile b/nptl/Makefile > index 74ab758c12..968768d33b 100644 > --- a/nptl/Makefile > +++ b/nptl/Makefile > @@ -147,7 +147,6 @@ libpthread-routines = nptl-init nptlfreeres vars > events version pt-interp \ pt-longjmp pt-cleanup\ > cancellation \ > lowlevellock \ > - lll_timedlock_wait \ > pt-fork pt-fcntl \ > $(pthread-compat-wrappers) \ > pt-raise pt-system \ > diff --git a/nptl/lll_timedlock_wait.c b/nptl/lll_timedlock_wait.c > deleted file mode 100644 > index eabdca70c8..0000000000 > --- a/nptl/lll_timedlock_wait.c > +++ /dev/null > @@ -1,62 +0,0 @@ > -/* Timed low level locking for pthread library. Generic futex-using > version. > - Copyright (C) 2003-2020 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be > useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#include <atomic.h> > -#include <errno.h> > -#include <lowlevellock.h> > -#include <sys/time.h> > -#include <time.h> > - > - > -int > -__lll_clocklock_wait (int *futex, int val, clockid_t clockid, > - const struct timespec *abstime, int private) > -{ > - struct timespec ts, *tsp = NULL; > - > - if (abstime != NULL) > - { > - /* Reject invalid timeouts. */ > - if (! valid_nanoseconds (abstime->tv_nsec)) > - return EINVAL; > - > - /* Get the current time. This can only fail if clockid is not > valid. */ > - if (__glibc_unlikely (__clock_gettime (clockid, &ts) != 0)) > - return EINVAL; > - > - /* Compute relative timeout. */ > - ts.tv_sec = abstime->tv_sec - ts.tv_sec; > - ts.tv_nsec = abstime->tv_nsec - ts.tv_nsec; > - if (ts.tv_nsec < 0) > - { > - ts.tv_nsec += 1000000000; > - --ts.tv_sec; > - } > - > - if (ts.tv_sec < 0) > - return ETIMEDOUT; > - > - tsp = &ts; > - } > - > - /* If *futex == val, wait until woken or timeout. */ > - lll_futex_timed_wait (futex, val, tsp, private); > - > - return 0; > -} > diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c > index 0439002454..1f137f6201 100644 > --- a/nptl/pthread_mutex_lock.c > +++ b/nptl/pthread_mutex_lock.c > @@ -425,8 +425,8 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) > > /* Delay the thread indefinitely. */ > while (1) > - lll_timedwait (&(int){0}, 0, 0 /* ignored */, NULL, > - private); > + __futex_abstimed_wait64 (&(unsigned int){0}, 0, > + 0 /* ignored */, NULL, > private); } > > oldval = mutex->__data.__lock; > diff --git a/sysdeps/nptl/lowlevellock.h b/sysdeps/nptl/lowlevellock.h > index 68b3be8819..3de87d31a9 100644 > --- a/sysdeps/nptl/lowlevellock.h > +++ b/sysdeps/nptl/lowlevellock.h > @@ -122,38 +122,6 @@ extern void __lll_lock_wait (int *futex, int > private) attribute_hidden; #define lll_cond_lock(futex, private) > __lll_cond_lock (&(futex), private) > > -extern int __lll_clocklock_wait (int *futex, int val, clockid_t, > - const struct timespec *, > - int private) attribute_hidden; > - > -#define lll_timedwait(futex, val, clockid, abstime, private) > \ > - __lll_clocklock_wait (futex, val, clockid, abstime, private) > - > -/* As __lll_lock, but with an absolute timeout measured against the > clock > - specified in CLOCKID. If the timeout occurs then return > ETIMEDOUT. If > - ABSTIME is invalid, return EINVAL. */ > -#define __lll_clocklock(futex, clockid, abstime, private) \ > - ({ \ > - int *__futex = (futex); \ > - int __val = 0; \ > - \ > - if (__glibc_unlikely \ > - (atomic_compare_and_exchange_bool_acq (__futex, 1, 0))) \ > - { > \ > - while (atomic_exchange_acq (futex, 2) != 0) \ > - { \ > - __val = __lll_clocklock_wait (__futex, 2, clockid, > \ > - abstime, private); \ > - if (__val == EINVAL || __val == ETIMEDOUT) > \ > - break; \ > - } \ > - } > \ > - __val; \ > - }) > -#define lll_clocklock(futex, clockid, abstime, private) \ > - __lll_clocklock (&(futex), clockid, abstime, private) > - > - > /* This is an expression rather than a statement even though its > value is void, so that it can be used in a comma expression or as an > expression that's cast to void. */ Reviewed-by: Lukasz Majewski <lukma@denx.de> Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
diff --git a/nptl/Makefile b/nptl/Makefile index 74ab758c12..968768d33b 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -147,7 +147,6 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \ pt-longjmp pt-cleanup\ cancellation \ lowlevellock \ - lll_timedlock_wait \ pt-fork pt-fcntl \ $(pthread-compat-wrappers) \ pt-raise pt-system \ diff --git a/nptl/lll_timedlock_wait.c b/nptl/lll_timedlock_wait.c deleted file mode 100644 index eabdca70c8..0000000000 --- a/nptl/lll_timedlock_wait.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Timed low level locking for pthread library. Generic futex-using version. - Copyright (C) 2003-2020 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <atomic.h> -#include <errno.h> -#include <lowlevellock.h> -#include <sys/time.h> -#include <time.h> - - -int -__lll_clocklock_wait (int *futex, int val, clockid_t clockid, - const struct timespec *abstime, int private) -{ - struct timespec ts, *tsp = NULL; - - if (abstime != NULL) - { - /* Reject invalid timeouts. */ - if (! valid_nanoseconds (abstime->tv_nsec)) - return EINVAL; - - /* Get the current time. This can only fail if clockid is not valid. */ - if (__glibc_unlikely (__clock_gettime (clockid, &ts) != 0)) - return EINVAL; - - /* Compute relative timeout. */ - ts.tv_sec = abstime->tv_sec - ts.tv_sec; - ts.tv_nsec = abstime->tv_nsec - ts.tv_nsec; - if (ts.tv_nsec < 0) - { - ts.tv_nsec += 1000000000; - --ts.tv_sec; - } - - if (ts.tv_sec < 0) - return ETIMEDOUT; - - tsp = &ts; - } - - /* If *futex == val, wait until woken or timeout. */ - lll_futex_timed_wait (futex, val, tsp, private); - - return 0; -} diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index 0439002454..1f137f6201 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -425,8 +425,8 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) /* Delay the thread indefinitely. */ while (1) - lll_timedwait (&(int){0}, 0, 0 /* ignored */, NULL, - private); + __futex_abstimed_wait64 (&(unsigned int){0}, 0, + 0 /* ignored */, NULL, private); } oldval = mutex->__data.__lock; diff --git a/sysdeps/nptl/lowlevellock.h b/sysdeps/nptl/lowlevellock.h index 68b3be8819..3de87d31a9 100644 --- a/sysdeps/nptl/lowlevellock.h +++ b/sysdeps/nptl/lowlevellock.h @@ -122,38 +122,6 @@ extern void __lll_lock_wait (int *futex, int private) attribute_hidden; #define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private) -extern int __lll_clocklock_wait (int *futex, int val, clockid_t, - const struct timespec *, - int private) attribute_hidden; - -#define lll_timedwait(futex, val, clockid, abstime, private) \ - __lll_clocklock_wait (futex, val, clockid, abstime, private) - -/* As __lll_lock, but with an absolute timeout measured against the clock - specified in CLOCKID. If the timeout occurs then return ETIMEDOUT. If - ABSTIME is invalid, return EINVAL. */ -#define __lll_clocklock(futex, clockid, abstime, private) \ - ({ \ - int *__futex = (futex); \ - int __val = 0; \ - \ - if (__glibc_unlikely \ - (atomic_compare_and_exchange_bool_acq (__futex, 1, 0))) \ - { \ - while (atomic_exchange_acq (futex, 2) != 0) \ - { \ - __val = __lll_clocklock_wait (__futex, 2, clockid, \ - abstime, private); \ - if (__val == EINVAL || __val == ETIMEDOUT) \ - break; \ - } \ - } \ - __val; \ - }) -#define lll_clocklock(futex, clockid, abstime, private) \ - __lll_clocklock (&(futex), clockid, abstime, private) - - /* This is an expression rather than a statement even though its value is void, so that it can be used in a comma expression or as an expression that's cast to void. */