From: Jonathan Wakely Date: Tue, 25 Nov 2025 14:29:50 +0000 (+0000) Subject: libstdc++: Use 32-bit platform wait type for OpenBSD and DragonFly [PR120527] X-Git-Url: http://git.ipfire.org/index.cgi?a=commitdiff_plain;ds=inline;p=thirdparty%2Fgcc.git libstdc++: Use 32-bit platform wait type for OpenBSD and DragonFly [PR120527] This defines __platform_wait_t as unsigned int for OpenBSD and DragonFly. This means that std::semaphore will use unsigned int by default, and so will benefit from more efficient wait/notify ops if we start to use the OpenBSD futex(2) syscall or the DragonFly umtx(2) syscalls. We don't currently use them, but if we start to in future, it would be an ABI break to change __platform_wait_t later. libstdc++-v3/ChangeLog: PR libstdc++/120527 * include/bits/atomic_wait.h [__OpenBSD__ || __DragonFly]: Use unsigned int for __platform_wait_t. Reviewed-by: Tomasz KamiƄski --- diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h index 704c10d5f38..5224e69817d 100644 --- a/libstdc++-v3/include/bits/atomic_wait.h +++ b/libstdc++-v3/include/bits/atomic_wait.h @@ -108,7 +108,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // a mutex/condvar based wait. namespace __detail { -# if ATOMIC_LONG_LOCK_FREE == 2 +# if defined __OpenBSD__ || defined __DragonFly__ + // These targets provide 32-bit futex-like syscalls. + // We don't currently make use of them, but we want to in future. + using __platform_wait_t = unsigned int; +# elif ATOMIC_LONG_LOCK_FREE == 2 using __platform_wait_t = unsigned long; # else using __platform_wait_t = unsigned int;