diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2010-03-24 14:46:03 -0700 |
---|---|---|
committer | Ryan Arnold <ryanarn@etna.rchland.ibm.com> | 2010-05-11 21:32:26 -0500 |
commit | c29c935857812826b11ce486ed7ee669f39c1c7d (patch) | |
tree | 83ddcfecb1e93d5af667fc60ecdfd535482af05b /nptl | |
parent | 8f0c277566d806f62ac02015660e3044b70bfc0f (diff) | |
download | glibc-c29c935857812826b11ce486ed7ee669f39c1c7d.zip glibc-c29c935857812826b11ce486ed7ee669f39c1c7d.tar.gz glibc-c29c935857812826b11ce486ed7ee669f39c1c7d.tar.bz2 |
Enable common version of pthread_cond_timedwait to use clock_gettime in VDSO
(cherry pick of commit 7749bf5fe6ac0464db10a3a17a31121517f92530)
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 7 | ||||
-rw-r--r-- | nptl/pthread_cond_timedwait.c | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 08a55ee..dde74f4 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,10 @@ +2010-03-23 Luis Machado <luisgpm@br.ibm.com> + + * pthread_cond_timedwait.c: Add check for + HAVE_CLOCK_GETTIME_VSYSCALL to use VDSO whenever possible. + (pthread_cond_timedwait): Use INTERNAL_VSYSCALL instead of + INTERNAL_SYSCALL. + 2009-11-27 Andreas Schwab <schwab@redhat.com> * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload diff --git a/nptl/pthread_cond_timedwait.c b/nptl/pthread_cond_timedwait.c index 9d268e9..7278ec4 100644 --- a/nptl/pthread_cond_timedwait.c +++ b/nptl/pthread_cond_timedwait.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004, 2007, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. @@ -27,6 +27,14 @@ #include <shlib-compat.h> +#ifndef HAVE_CLOCK_GETTIME_VSYSCALL +# undef INTERNAL_VSYSCALL +# define INTERNAL_VSYSCALL INTERNAL_SYSCALL +# undef INLINE_VSYSCALL +# define INLINE_VSYSCALL INLINE_SYSCALL +#else +# include <bits/libc-vdso.h> +#endif /* Cleanup handler, defined in pthread_cond_wait.c. */ extern void __condvar_cleanup (void *arg) @@ -102,7 +110,7 @@ __pthread_cond_timedwait (cond, mutex, abstime) #ifdef __NR_clock_gettime INTERNAL_SYSCALL_DECL (err); int ret; - ret = INTERNAL_SYSCALL (clock_gettime, err, 2, + ret = INTERNAL_VSYSCALL (clock_gettime, err, 2, (cond->__data.__nwaiters & ((1 << COND_NWAITERS_SHIFT) - 1)), &rt); |