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 , 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 > - . */ > - > -#include > -#include > -#include > -#include > -#include > - > - > -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 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