about summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog9
-rw-r--r--linuxthreads/Versions3
-rw-r--r--linuxthreads/forward.c9
-rw-r--r--linuxthreads/internals.h3
-rw-r--r--linuxthreads/pthread.c1
-rw-r--r--linuxthreads/sysdeps/pthread/pthread-functions.h2
6 files changed, 26 insertions, 1 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index b6a79ea45e..20f59046d2 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -17,6 +17,15 @@
 	* tst-tls1modf.c: New.
 	* tst-tls2.sh: New test.
 
+	* internals.h (__pthread_cond_timedwait): New prototype.
+	* sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
+	ptr___pthread_cond_timedwait.
+	* pthread.c (__pthread_functions): Initialize them.
+	* forward.c (pthread_cond_timedwait@GLIBC_2.0,
+	pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
+	* Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
+	pthread_cond_timedwait@@GLIBC_2.3.2.
+
 2003-08-27  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/pthread/pthread.h: Don't mark pthread_exit,
diff --git a/linuxthreads/Versions b/linuxthreads/Versions
index e10826cb46..423b5ecedb 100644
--- a/linuxthreads/Versions
+++ b/linuxthreads/Versions
@@ -7,6 +7,7 @@ libc {
     pthread_attr_setschedparam; pthread_attr_setschedpolicy;
     pthread_attr_setscope; pthread_cond_broadcast; pthread_cond_destroy;
     pthread_cond_init; pthread_cond_signal; pthread_cond_wait;
+    pthread_cond_timedwait;
     pthread_condattr_destroy; pthread_condattr_init; pthread_equal;
     pthread_exit; pthread_getschedparam; pthread_mutex_destroy;
     pthread_mutex_init; pthread_mutex_lock; pthread_mutex_unlock;
@@ -20,7 +21,7 @@ libc {
     # Changed pthread_cond_t.
     pthread_cond_init; pthread_cond_destroy;
     pthread_cond_wait; pthread_cond_signal;
-    pthread_cond_broadcast;
+    pthread_cond_broadcast; pthread_cond_timedwait;
   }
   GLIBC_PRIVATE {
     # Internal libc interface to libpthread
diff --git a/linuxthreads/forward.c b/linuxthreads/forward.c
index 6cc2f99aac..46cf53893e 100644
--- a/linuxthreads/forward.c
+++ b/linuxthreads/forward.c
@@ -128,6 +128,15 @@ compat_symbol (libc, __pthread_cond_wait_2_0, pthread_cond_wait, GLIBC_2_0);
 #endif
 versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2);
 
+FORWARD (__pthread_cond_timedwait,
+	 (pthread_cond_t *cond, pthread_mutex_t *mutex,
+	  const struct timespec *abstime), (cond, mutex, abstime), 0)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
+strong_alias (__pthread_cond_timedwait, __pthread_cond_timedwait_2_0)
+compat_symbol (libc, __pthread_cond_timedwait_2_0, pthread_cond_timedwait, GLIBC_2_0);
+#endif
+versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait, GLIBC_2_3_2);
+
 
 FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
 	 (thread1, thread2), 1)
diff --git a/linuxthreads/internals.h b/linuxthreads/internals.h
index 69923e9b77..a5ec8b9284 100644
--- a/linuxthreads/internals.h
+++ b/linuxthreads/internals.h
@@ -354,6 +354,9 @@ extern int __pthread_cond_init (pthread_cond_t *cond,
 				const pthread_condattr_t *cond_attr);
 extern int __pthread_cond_destroy (pthread_cond_t *cond);
 extern int __pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex);
+extern int __pthread_cond_timedwait (pthread_cond_t *cond,
+				     pthread_mutex_t *mutex,
+				     const struct timespec *abstime);
 extern int __pthread_cond_signal (pthread_cond_t *cond);
 extern int __pthread_cond_broadcast (pthread_cond_t *cond);
 extern int __pthread_condattr_init (pthread_condattr_t *attr);
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index f261f8e8f4..5d5368f4d7 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -260,6 +260,7 @@ struct pthread_functions __pthread_functions =
     .ptr___pthread_cond_init = __pthread_cond_init,
     .ptr___pthread_cond_signal = __pthread_cond_signal,
     .ptr___pthread_cond_wait = __pthread_cond_wait,
+    .ptr___pthread_cond_timedwait = __pthread_cond_timedwait,
     .ptr_pthread_equal = __pthread_equal,
     .ptr___pthread_exit = __pthread_exit,
     .ptr_pthread_getschedparam = __pthread_getschedparam,
diff --git a/linuxthreads/sysdeps/pthread/pthread-functions.h b/linuxthreads/sysdeps/pthread/pthread-functions.h
index f47b46ff6e..e2d17f78c5 100644
--- a/linuxthreads/sysdeps/pthread/pthread-functions.h
+++ b/linuxthreads/sysdeps/pthread/pthread-functions.h
@@ -54,6 +54,8 @@ struct pthread_functions
 				  const pthread_condattr_t *);
   int (*ptr___pthread_cond_signal) (pthread_cond_t *);
   int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
+  int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
+				       const struct timespec *);
   int (*ptr_pthread_equal) (pthread_t, pthread_t);
   void (*ptr___pthread_exit) (void *);
   int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);