diff --git a/bee/thread/atomic_sync.cpp b/bee/thread/atomic_sync.cpp index 845b344d..2a1ab587 100644 --- a/bee/thread/atomic_sync.cpp +++ b/bee/thread/atomic_sync.cpp @@ -49,7 +49,11 @@ static void futex_wait(const int* ptr, int val, const FutexTimespec* timeout) { # if defined(__linux__) ::syscall(SYS_futex, ptr, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, val, timeout, 0, 0); # elif defined(__NetBSD__) - ::syscall(SYS___futex, ptr, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, val, timeout, 0, 0, 0); + struct timespec ts = { + .tv_sec = timeout.tv_sec, + .tv_nsec = timeout.tv, + }; + ::syscall(SYS___futex, ptr, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, val, &ts, 0, 0, 0); # elif defined(__OpenBSD__) static_assert(sizeof(FutexTimespec) == sizeof(timespec)); ::futex((uint32_t*)const_cast(ptr), FUTEX_WAIT | FUTEX_PRIVATE_FLAG, val, (const timespec*)timeout, 0);