diff --git a/emper/lib/sync/SpuriousFutex2Semaphore.cpp b/emper/lib/sync/SpuriousFutex2Semaphore.cpp index 41abdc8b1aeb0a3ee88a3937ba59ba19aafc3f72..72ffa3901253a873465e376c551ca3a02076698d 100644 --- a/emper/lib/sync/SpuriousFutex2Semaphore.cpp +++ b/emper/lib/sync/SpuriousFutex2Semaphore.cpp @@ -10,6 +10,7 @@ #include <cerrno> #include "Worker.hpp" +#include "emper-config.h" #ifndef SYS_futex_waitv #define SYS_futex_waitv 449 @@ -19,18 +20,21 @@ #define FUTEX_32 2 #endif +#ifdef EMPER_DEFINE_FUTEX_WAITV struct futex_waitv { uint64_t val; uint64_t uaddr; uint32_t flags; - uint32_t _reserved; + // NOLINTNEXTLINE(bugprone-reserved-identifier) + uint32_t __reserved; }; +#endif static void init_futex_waitv(struct futex_waitv* waiter, uint64_t val, void* uaddr) { waiter->val = val; waiter->uaddr = reinterpret_cast<uintptr_t>(uaddr); waiter->flags = FUTEX_PRIVATE_FLAG | FUTEX_32; - waiter->_reserved = 0; + waiter->__reserved = 0; } namespace emper::lib::sync { diff --git a/emper/lib/sync/meson.build b/emper/lib/sync/meson.build index c4476caeaea16eed711961c3b8673669073a658c..8e4cd142c4b2eff6e7b86a73270923231981f5b0 100644 --- a/emper/lib/sync/meson.build +++ b/emper/lib/sync/meson.build @@ -1,3 +1,8 @@ +if not cpp_compiler.has_member('struct futex_waitv', 'val', + prefix: '#include <linux/futex.h>') + conf_data.set('EMPER_DEFINE_FUTEX_WAITV', true) +endif + emper_cpp_sources += files( 'SpuriousFutex2Semaphore.cpp', )