* [COMMITTED PATCH] NaCl: Add NaCl-specific __lll_timedlock_wait.
@ 2015-05-27 2:40 Roland McGrath
2015-05-27 10:17 ` Torvald Riegel
0 siblings, 1 reply; 3+ messages in thread
From: Roland McGrath @ 2015-05-27 2:40 UTC (permalink / raw)
To: GNU C. Library
* sysdeps/nacl/lll_timedlock_wait.c: New file.
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;
+}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [COMMITTED PATCH] NaCl: Add NaCl-specific __lll_timedlock_wait.
2015-05-27 2:40 [COMMITTED PATCH] NaCl: Add NaCl-specific __lll_timedlock_wait Roland McGrath
@ 2015-05-27 10:17 ` Torvald Riegel
2015-06-10 1:28 ` Roland McGrath
0 siblings, 1 reply; 3+ messages in thread
From: Torvald Riegel @ 2015-05-27 10:17 UTC (permalink / raw)
To: Roland McGrath; +Cc: GNU C. Library
On Tue, 2015-05-26 at 15:31 -0700, Roland McGrath wrote:
> +/* 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). */
If you remember the new glibc-internal futex API I proposed, it provided
variants for both absolute and relative timeouts. Would now be a good
time to pursue adding this API so that changes like this wouldn't need
to be NaCl-specific?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [COMMITTED PATCH] NaCl: Add NaCl-specific __lll_timedlock_wait.
2015-05-27 10:17 ` Torvald Riegel
@ 2015-06-10 1:28 ` Roland McGrath
0 siblings, 0 replies; 3+ messages in thread
From: Roland McGrath @ 2015-06-10 1:28 UTC (permalink / raw)
To: Torvald Riegel; +Cc: GNU C. Library
> On Tue, 2015-05-26 at 15:31 -0700, Roland McGrath wrote:
> > +/* 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). */
>
> If you remember the new glibc-internal futex API I proposed, it provided
> variants for both absolute and relative timeouts. Would now be a good
> time to pursue adding this API so that changes like this wouldn't need
> to be NaCl-specific?
Certainly! As you might surmise, I'm going through old email backlog now.
I hope to get caught up by the end of this week, and then be in a position
to interact helpfully on new reviews. (I've seen your new futex API patch
but not read it yet, and will get through all the old backlog first.)
Thanks,
Roland
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-06-09 23:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-27 2:40 [COMMITTED PATCH] NaCl: Add NaCl-specific __lll_timedlock_wait Roland McGrath
2015-05-27 10:17 ` Torvald Riegel
2015-06-10 1:28 ` Roland McGrath
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).