This is the mail archive of the glibc-cvs@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]

GNU C Library master sources branch master updated. glibc-2.21-406-g68c97ae


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  68c97aef626e489effeffe6d1d6a4f14656a720c (commit)
      from  97554e4382e5d85eccf146b58f85aaad7e3d687c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=68c97aef626e489effeffe6d1d6a4f14656a720c

commit 68c97aef626e489effeffe6d1d6a4f14656a720c
Author: Roland McGrath <roland@hack.frob.com>
Date:   Tue May 26 14:49:13 2015 -0700

    Split timed-wait functions out of nptl/lowlevellock.c.

diff --git a/ChangeLog b/ChangeLog
index 93ea276..2e48f33 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2015-05-26  Roland McGrath  <roland@hack.frob.com>
+
+	* nptl/lowlevellock.c (__lll_timedlock_wait): Moved ...
+	* nptl/lll_timedlock_wait.c: ... to this new file.
+	* nptl/Makefile (libpthread-routines): Add it.
+	* nptl/lowlevellock.c (__lll_timedwait_tid): Moved ...
+	* nptl/lll_timedwait_tid.c: ... to this new file.
+	* nptl/Makefile (libpthread-routines): Add it.
+	* sysdeps/sparc/sparc32/lll_timedlock_wait.c: New file.
+	* sysdeps/sparc/sparc32/lll_timedwait_tid.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i486/lll_timedlock_wait.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i586/lll_timedlock_wait.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i686/lll_timedlock_wait.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i486/lll_timedwait_tid.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i586/lll_timedwait_tid.c: New file.
+	* sysdeps/unix/sysv/linux/i386/i686/lll_timedwait_tid.c: New file.
+	* sysdeps/unix/sysv/linux/x86_64/lll_timedlock_wait.c: New file.
+	* sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c: New file.
+
 2015-05-26  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: Remove file.
diff --git a/nptl/Makefile b/nptl/Makefile
index 8e99452..3dd2944 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -106,6 +106,7 @@ libpthread-routines = nptl-init vars events version \
 		      pt-longjmp pt-cleanup\
 		      cancellation \
 		      lowlevellock lowlevelrobustlock \
+		      lll_timedlock_wait lll_timedwait_tid \
 		      pt-fork pt-vfork \
 		      ptw-write ptw-read ptw-close ptw-fcntl ptw-accept \
 		      ptw-connect ptw-recv ptw-recvfrom ptw-recvmsg ptw-send \
diff --git a/nptl/lll_timedlock_wait.c b/nptl/lll_timedlock_wait.c
new file mode 100644
index 0000000..37cf083
--- /dev/null
+++ b/nptl/lll_timedlock_wait.c
@@ -0,0 +1,59 @@
+/* Timed low level locking for pthread library.  Generic futex-using version.
+   Copyright (C) 2003-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Paul Mackerras <paulus@au.ibm.com>, 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
+   <http://www.gnu.org/licenses/>.  */
+
+#include <atomic.h>
+#include <errno.h>
+#include <lowlevellock.h>
+#include <sys/time.h>
+
+
+int
+__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
+{
+  /* Reject invalid timeouts.  */
+  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+    return EINVAL;
+
+  /* Try locking.  */
+  while (atomic_exchange_acq (futex, 2) != 0)
+    {
+      struct timeval tv;
+
+      /* Get the current time.  */
+      (void) __gettimeofday (&tv, NULL);
+
+      /* Compute relative timeout.  */
+      struct timespec rt;
+      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+      if (rt.tv_nsec < 0)
+        {
+          rt.tv_nsec += 1000000000;
+          --rt.tv_sec;
+        }
+
+      if (rt.tv_sec < 0)
+        return ETIMEDOUT;
+
+      /* If *futex == 2, wait until woken or timeout.  */
+      lll_futex_timed_wait (futex, 2, &rt, private);
+    }
+
+  return 0;
+}
diff --git a/nptl/lll_timedwait_tid.c b/nptl/lll_timedwait_tid.c
new file mode 100644
index 0000000..68b4857
--- /dev/null
+++ b/nptl/lll_timedwait_tid.c
@@ -0,0 +1,70 @@
+/* Timed waiting for thread death.  Generic futex-using version.
+   Copyright (C) 2003-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Paul Mackerras <paulus@au.ibm.com>, 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
+   <http://www.gnu.org/licenses/>.  */
+
+#include <atomic.h>
+#include <errno.h>
+#include <lowlevellock.h>
+#include <sys/time.h>
+
+
+/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
+   wake-up when the clone terminates.  The memory location contains the
+   thread ID while the clone is running and is reset to zero by the kernel
+   afterwards.  The kernel up to version 3.16.3 does not use the private futex
+   operations for futex wake-up when the clone terminates.  */
+int
+__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
+{
+  int tid;
+
+  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+    return EINVAL;
+
+  /* Repeat until thread terminated.  */
+  while ((tid = *tidp) != 0)
+    {
+      struct timeval tv;
+      struct timespec rt;
+
+      /* Get the current time.  */
+      (void) __gettimeofday (&tv, NULL);
+
+      /* Compute relative timeout.  */
+      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+      if (rt.tv_nsec < 0)
+        {
+          rt.tv_nsec += 1000000000;
+          --rt.tv_sec;
+        }
+
+      /* Already timed out?  */
+      if (rt.tv_sec < 0)
+        return ETIMEDOUT;
+
+      /* If *tidp == tid, wait until thread terminates or the wait times out.
+         The kernel up to version 3.16.3 does not use the private futex
+         operations for futex wake-up when the clone terminates.
+      */
+      if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
+        return ETIMEDOUT;
+    }
+
+  return 0;
+}
diff --git a/nptl/lowlevellock.c b/nptl/lowlevellock.c
index 98c859f..7025b9e 100644
--- a/nptl/lowlevellock.c
+++ b/nptl/lowlevellock.c
@@ -34,7 +34,7 @@ __lll_lock_wait_private (int *futex)
 }
 
 
-/* These functions don't get included in libc.so  */
+/* This function doesn't get included in libc.  */
 #if IS_IN (libpthread)
 void
 __lll_lock_wait (int *futex, int private)
@@ -45,87 +45,4 @@ __lll_lock_wait (int *futex, int private)
   while (atomic_exchange_acq (futex, 2) != 0)
     lll_futex_wait (futex, 2, private); /* Wait if *futex == 2.  */
 }
-
-
-int
-__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
-{
-  /* Reject invalid timeouts.  */
-  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
-    return EINVAL;
-
-  /* Try locking.  */
-  while (atomic_exchange_acq (futex, 2) != 0)
-    {
-      struct timeval tv;
-
-      /* Get the current time.  */
-      (void) __gettimeofday (&tv, NULL);
-
-      /* Compute relative timeout.  */
-      struct timespec rt;
-      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
-      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
-      if (rt.tv_nsec < 0)
-	{
-	  rt.tv_nsec += 1000000000;
-	  --rt.tv_sec;
-	}
-
-      if (rt.tv_sec < 0)
-	return ETIMEDOUT;
-
-      /* If *futex == 2, wait until woken or timeout.  */
-      lll_futex_timed_wait (futex, 2, &rt, private);
-    }
-
-  return 0;
-}
-
-
-/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
-   wake-up when the clone terminates.  The memory location contains the
-   thread ID while the clone is running and is reset to zero by the kernel
-   afterwards.  The kernel up to version 3.16.3 does not use the private futex
-   operations for futex wake-up when the clone terminates.  */
-int
-__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
-{
-  int tid;
-
-  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
-    return EINVAL;
-
-  /* Repeat until thread terminated.  */
-  while ((tid = *tidp) != 0)
-    {
-      struct timeval tv;
-      struct timespec rt;
-
-      /* Get the current time.  */
-      (void) __gettimeofday (&tv, NULL);
-
-      /* Compute relative timeout.  */
-      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
-      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
-      if (rt.tv_nsec < 0)
-	{
-	  rt.tv_nsec += 1000000000;
-	  --rt.tv_sec;
-	}
-
-      /* Already timed out?  */
-      if (rt.tv_sec < 0)
-	return ETIMEDOUT;
-
-      /* If *tidp == tid, wait until thread terminates or the wait times out.
-         The kernel up to version 3.16.3 does not use the private futex
-         operations for futex wake-up when the clone terminates.
-      */
-      if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
-	return ETIMEDOUT;
-    }
-
-  return 0;
-}
 #endif
diff --git a/sysdeps/sparc/sparc32/lll_timedlock_wait.c b/sysdeps/sparc/sparc32/lll_timedlock_wait.c
new file mode 100644
index 0000000..c2c93fa
--- /dev/null
+++ b/sysdeps/sparc/sparc32/lll_timedlock_wait.c
@@ -0,0 +1 @@
+/* __lll_timedlock_wait is in lowlevellock.c.  */
diff --git a/sysdeps/sparc/sparc32/lll_timedwait_tid.c b/sysdeps/sparc/sparc32/lll_timedwait_tid.c
new file mode 100644
index 0000000..511608e
--- /dev/null
+++ b/sysdeps/sparc/sparc32/lll_timedwait_tid.c
@@ -0,0 +1 @@
+/* __lll_timedwait_tid is in lowlevellock.c.  */
diff --git a/sysdeps/unix/sysv/linux/i386/i486/lll_timedlock_wait.c b/sysdeps/unix/sysv/linux/i386/i486/lll_timedlock_wait.c
new file mode 100644
index 0000000..f6875b8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i486/lll_timedlock_wait.c
@@ -0,0 +1 @@
+/* __lll_timedlock_wait is in lowlevellock.S.  */
diff --git a/sysdeps/unix/sysv/linux/i386/i486/lll_timedwait_tid.c b/sysdeps/unix/sysv/linux/i386/i486/lll_timedwait_tid.c
new file mode 100644
index 0000000..43900c6
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i486/lll_timedwait_tid.c
@@ -0,0 +1 @@
+/* __lll_timedwait_tid is in lowlevellock.S.  */
diff --git a/sysdeps/unix/sysv/linux/i386/i586/lll_timedlock_wait.c b/sysdeps/unix/sysv/linux/i386/i586/lll_timedlock_wait.c
new file mode 100644
index 0000000..fa4357b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i586/lll_timedlock_wait.c
@@ -0,0 +1 @@
+#include "../i486/lll_timedlock_wait.c"
diff --git a/sysdeps/unix/sysv/linux/i386/i586/lll_timedwait_tid.c b/sysdeps/unix/sysv/linux/i386/i586/lll_timedwait_tid.c
new file mode 100644
index 0000000..1586104
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i586/lll_timedwait_tid.c
@@ -0,0 +1 @@
+#include "../i486/lll_timedwait_tid.c"
diff --git a/sysdeps/unix/sysv/linux/i386/i686/lll_timedlock_wait.c b/sysdeps/unix/sysv/linux/i386/i686/lll_timedlock_wait.c
new file mode 100644
index 0000000..fa4357b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/lll_timedlock_wait.c
@@ -0,0 +1 @@
+#include "../i486/lll_timedlock_wait.c"
diff --git a/sysdeps/unix/sysv/linux/i386/i686/lll_timedwait_tid.c b/sysdeps/unix/sysv/linux/i386/i686/lll_timedwait_tid.c
new file mode 100644
index 0000000..1586104
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/lll_timedwait_tid.c
@@ -0,0 +1 @@
+#include "../i486/lll_timedwait_tid.c"
diff --git a/sysdeps/unix/sysv/linux/x86_64/lll_timedlock_wait.c b/sysdeps/unix/sysv/linux/x86_64/lll_timedlock_wait.c
new file mode 100644
index 0000000..f6875b8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/lll_timedlock_wait.c
@@ -0,0 +1 @@
+/* __lll_timedlock_wait is in lowlevellock.S.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c b/sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c
new file mode 100644
index 0000000..43900c6
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c
@@ -0,0 +1 @@
+/* __lll_timedwait_tid is in lowlevellock.S.  */

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   19 +++++
 nptl/Makefile                                      |    1 +
 nptl/lll_timedlock_wait.c                          |   59 ++++++++++++++
 nptl/lll_timedwait_tid.c                           |   70 ++++++++++++++++
 nptl/lowlevellock.c                                |   85 +-------------------
 sysdeps/sparc/sparc32/lll_timedlock_wait.c         |    1 +
 sysdeps/sparc/sparc32/lll_timedwait_tid.c          |    1 +
 .../unix/sysv/linux/i386/i486/lll_timedlock_wait.c |    1 +
 .../unix/sysv/linux/i386/i486/lll_timedwait_tid.c  |    1 +
 .../unix/sysv/linux/i386/i586/lll_timedlock_wait.c |    1 +
 .../unix/sysv/linux/i386/i586/lll_timedwait_tid.c  |    1 +
 .../unix/sysv/linux/i386/i686/lll_timedlock_wait.c |    1 +
 .../unix/sysv/linux/i386/i686/lll_timedwait_tid.c  |    1 +
 .../unix/sysv/linux/x86_64/lll_timedlock_wait.c    |    1 +
 sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c |    1 +
 15 files changed, 160 insertions(+), 84 deletions(-)
 create mode 100644 nptl/lll_timedlock_wait.c
 create mode 100644 nptl/lll_timedwait_tid.c
 create mode 100644 sysdeps/sparc/sparc32/lll_timedlock_wait.c
 create mode 100644 sysdeps/sparc/sparc32/lll_timedwait_tid.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i486/lll_timedlock_wait.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i486/lll_timedwait_tid.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i586/lll_timedlock_wait.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i586/lll_timedwait_tid.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i686/lll_timedlock_wait.c
 create mode 100644 sysdeps/unix/sysv/linux/i386/i686/lll_timedwait_tid.c
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/lll_timedlock_wait.c
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/lll_timedwait_tid.c


hooks/post-receive
-- 
GNU C Library master sources


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