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-407-g1f3a37b


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  1f3a37b19ccc481197ffd6a5cf014dfb07c6dd4e (commit)
      from  68c97aef626e489effeffe6d1d6a4f14656a720c (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=1f3a37b19ccc481197ffd6a5cf014dfb07c6dd4e

commit 1f3a37b19ccc481197ffd6a5cf014dfb07c6dd4e
Author: Roland McGrath <roland@hack.frob.com>
Date:   Tue May 26 15:30:47 2015 -0700

    NaCl: Add NaCl-specific __lll_timedlock_wait.

diff --git a/ChangeLog b/ChangeLog
index 2e48f33..7fcd403 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2015-05-26  Roland McGrath  <roland@hack.frob.com>
 
+	* sysdeps/nacl/lll_timedlock_wait.c: New file.
+
 	* nptl/lowlevellock.c (__lll_timedlock_wait): Moved ...
 	* nptl/lll_timedlock_wait.c: ... to this new file.
 	* nptl/Makefile (libpthread-routines): Add it.
diff --git a/sysdeps/nacl/lll_timedlock_wait.c b/sysdeps/nacl/lll_timedlock_wait.c
new file mode 100644
index 0000000..df951ee
--- /dev/null
+++ b/sysdeps/nacl/lll_timedlock_wait.c
@@ -0,0 +1,52 @@
+/* Timed low level locking for pthread library.  NaCl version.
+   Copyright (C) 2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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 <assert.h>
+#include <atomic.h>
+#include <errno.h>
+#include <lowlevellock.h>
+#include <sys/time.h>
+
+
+/* This behaves the same as the generic version in nptl/.  It's simpler
+   because it doesn't need to convert an absolute timeout to a relative
+   one (and back again in the lll_futex_timed_wait macro).  */
+
+int
+__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
+{
+  /* Reject invalid timeouts.  */
+  if (__glibc_unlikely (abstime->tv_nsec < 0)
+      || __glibc_unlikely (abstime->tv_nsec >= 1000000000))
+    return EINVAL;
+
+  /* Try locking.  */
+  int result = 0;
+  while (atomic_exchange_acq (futex, 2) != 0)
+    {
+      /* If *futex == 2, wait until woken or timeout.  */
+      result = __nacl_irt_futex.futex_wait_abs ((volatile int *) futex, 2,
+						abstime);
+      if (__glibc_likely (result == 0)
+	  || __glibc_likely (result == ETIMEDOUT))
+	break;
+      assert (result == EAGAIN);
+    }
+
+  return result;
+}

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

Summary of changes:
 ChangeLog                                   |    2 +
 {nptl => sysdeps/nacl}/lll_timedlock_wait.c |   41 +++++++++++---------------
 2 files changed, 19 insertions(+), 24 deletions(-)
 copy {nptl => sysdeps/nacl}/lll_timedlock_wait.c (59%)


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]