message: syscall (futex) errors are returned in errno
  this fixes a problem where our implementation of Condition would not
  handle timeouts properly
diff: #include <linux/futex.h>
  #include <sys/syscall.h>
  -#include <unistd.h>
  +#include <errno.h>
  #include <stdbool.h>
  +#include <unistd.h>
  struct timespec;
  @@ -29,7 +30,14 @@ namespace linuxutil {
  inline int futex(volatile void* ftx, int op, int value,
  const struct timespec* timeout, int bitset) {
  - return (int)syscall(__NR_futex, ftx, op, value, timeout, nullptr, bitset);
  + // from futex man pages:
  + // In the event of an error (and assuming that futex() was invoked via syscall(2)),
  + // all operations return -1 and set errno to indicate the cause of the error.
  + int err = (int)syscall(__NR_futex, ftx, op, value, timeout, nullptr, bitset);
  + if (UTILS_UNLIKELY(err == -1)) {
  + err = -errno;
  + }
  + return err;
  }
  inline int futex_wake(volatile void* ftx, int count) {
  