<div dir="ltr"><div>Pushed. Thanks!</div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 30, 2019 at 10:19 AM Jonathan Gray <<a href="mailto:jsg@jsg.id.au">jsg@jsg.id.au</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Make use of the futex syscall added in OpenBSD 6.2.<br>
<br>
Signed-off-by: Jonathan Gray <<a href="mailto:jsg@jsg.id.au" target="_blank">jsg@jsg.id.au</a>><br>
---<br>
 src/util/futex.h | 18 ++++++++++++++++++<br>
 1 file changed, 18 insertions(+)<br>
<br>
diff --git a/src/util/futex.h b/src/util/futex.h<br>
index 268af92882a..cf8dd0206c9 100644<br>
--- a/src/util/futex.h<br>
+++ b/src/util/futex.h<br>
@@ -85,6 +85,24 @@ static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *tim<br>
    return _umtx_op(addr, UMTX_OP_WAIT_UINT, (uint32_t)value, uaddr, uaddr2) == -1 ? errno : 0;<br>
 }<br>
<br>
+#elif defined(__OpenBSD__)<br>
+<br>
+#include <sys/time.h><br>
+#include <sys/futex.h><br>
+<br>
+static inline int futex_wake(uint32_t *addr, int count)<br>
+{<br>
+   return futex(addr, FUTEX_WAKE, count, NULL, NULL);<br>
+}<br>
+<br>
+static inline int futex_wait(uint32_t *addr, int32_t value, const struct timespec *timeout)<br>
+{<br>
+   struct timespec tsrel, tsnow;<br>
+   clock_gettime(CLOCK_MONOTONIC, &tsnow); <br>
+   timespecsub(timeout, &tsrel, &tsrel);<br>
+   return futex(addr, FUTEX_WAIT, value, &tsrel, NULL);<br>
+}<br>
+<br>
 #endif<br>
<br>
 #endif /* UTIL_FUTEX_H */<br>
-- <br>
2.24.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div>