On Linux and FreeBSD the futex usage implies the variable is a 32 bits integer.
A futex is a 32-bit value—referred to below as a futex word—whose address is
supplied to the futex() system call. (Futexes are 32 bits in size on all
platforms, including 64-bit systems.)
The uaddr argument points to the futex word. On all platforms, futexes are
four-byte integers that must be aligned on a four-byte boundary.
It uses UMTX_OP_WAIT_UINT_PRIVATE which is similar to UMTX_OP_WAIT_UINT.
UMTX_OP_WAIT_UINT is the same as UMTX_OP_WAIT but with "the type of the
variable pointed to by obj is u_int, i.e. 32-bit integer".
Either we use a type per platform, a common type (this patch) or allow more types on platforms that allow more types.
The type needs to be an atomic because the vlc_wait_XXX do some atomic operations on the variables before calling the "system" futeces.
atomic_uint_least32_t is allegedly 32-bits on most platforms so we use that as
a strictly 32-bits atomic type.
Deprecates !691 (closed)
VideoLAN code repository instance