This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Enable common version of pthread_cond_timedwait to useVDSO version of clock_gettime(...)


Hi,

Currently the common version of pthread_cond_timedwait(...) makes a
explicit call to the clock_gettime(...) syscall.

This patch enables pthread_cond_timedwait to use the VDSO version of
clock_gettime(...), whenever it's available, hopefully improving
performance.

Regtested on powerpc with no regressions.

OK for trunk?

Luis


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.
	Update Copyright year.
	(pthread_cond_timedwait): Use INTERNAL_VSYSCALL instead of
	INTERNAL_SYSCALL.

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);




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]