From patchwork Wed Dec 30 23:16:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aurelien Jarno X-Patchwork-Id: 10180 Received: (qmail 53195 invoked by alias); 30 Dec 2015 23:16:26 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 53186 invoked by uid 89); 30 Dec 2015 23:16:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.0 required=5.0 tests=AWL, BAYES_50, KAM_LAZY_DOMAIN_SECURITY, LOTS_OF_MONEY, RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=1000000000, H*r:TLS1.2, Convert, edx X-HELO: hall.aurel32.net From: Aurelien Jarno To: libc-alpha@sourceware.org Cc: Aurelien Jarno Subject: [PATCH v2] pthread_cond_timedwait: always use clock_gettime Date: Thu, 31 Dec 2015 00:16:09 +0100 Message-Id: <1451517369-2692-1-git-send-email-aurelien@aurel32.net> Since we require at least a 2.6.32 Linux kernel, the clock_gettime syscall is always available for all architectures we support. Remove the corresponding compatibility code. * nptl/pthread_cond_timedwait.c [!__NR_clock_gettime] (__pthread_cond_timedwait): Remove compatibility code. * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S [!__NR_clock_gettime] (__pthread_cond_timedwait): Likewise. --- ChangeLog | 7 +++++++ nptl/pthread_cond_timedwait.c | 10 ---------- sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S | 18 ------------------ 3 files changed, 7 insertions(+), 28 deletions(-) v1 -> v2: do the same cleanup on nptl/pthread_cond_timedwait.c as suggested by Mike Frysinger. diff --git a/ChangeLog b/ChangeLog index df00cb5..27a1237 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2015-12-30 Aurelien Jarno + * nptl/pthread_cond_timedwait.c [!__NR_clock_gettime] + (__pthread_cond_timedwait): Remove compatibility code. + * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S + [!__NR_clock_gettime] (__pthread_cond_timedwait): Likewise. + +2015-12-30 Aurelien Jarno + * sysdeps/unix/sysv/linux/dl-openat64.c [!__NR_openat] (openat64): Remove compatibility code. diff --git a/nptl/pthread_cond_timedwait.c b/nptl/pthread_cond_timedwait.c index 10b0a61..10925f2 100644 --- a/nptl/pthread_cond_timedwait.c +++ b/nptl/pthread_cond_timedwait.c @@ -117,7 +117,6 @@ __pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex, || !defined lll_futex_timed_wait_bitset) struct timespec rt; { -# ifdef __NR_clock_gettime INTERNAL_SYSCALL_DECL (err); (void) INTERNAL_VSYSCALL (clock_gettime, err, 2, (cond->__data.__nwaiters @@ -126,15 +125,6 @@ __pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex, /* Convert the absolute timeout value to a relative timeout. */ rt.tv_sec = abstime->tv_sec - rt.tv_sec; rt.tv_nsec = abstime->tv_nsec - rt.tv_nsec; -# else - /* Get the current time. So far we support only one clock. */ - struct timeval tv; - (void) __gettimeofday (&tv, NULL); - - /* Convert the absolute timeout value to a relative timeout. */ - rt.tv_sec = abstime->tv_sec - tv.tv_sec; - rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000; -# endif } if (rt.tv_nsec < 0) { diff --git a/sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S b/sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S index 130c090..cd8931a 100644 --- a/sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S +++ b/sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S @@ -555,7 +555,6 @@ __pthread_cond_timedwait: /* Get the current time. */ 108: movl %ebx, %edx -# ifdef __NR_clock_gettime /* Get the clock number. */ movl cond_nwaiters(%ebx), %ebx andl $((1 << nwaiters_shift) - 1), %ebx @@ -571,23 +570,6 @@ __pthread_cond_timedwait: movl 4(%ebp), %edx subl 24(%esp), %ecx subl 28(%esp), %edx -# else - /* Get the current time. */ - leal 24(%esp), %ebx - xorl %ecx, %ecx - movl $__NR_gettimeofday, %eax - ENTER_KERNEL - movl %edx, %ebx - - /* Compute relative timeout. */ - movl 28(%esp), %eax - movl $1000, %edx - mul %edx /* Milli seconds to nano seconds. */ - movl (%ebp), %ecx - movl 4(%ebp), %edx - subl 24(%esp), %ecx - subl %eax, %edx -# endif jns 112f addl $1000000000, %edx subl $1, %ecx