From 1d164e8180afbc9c964989d6c80d28180ce0da72 Mon Sep 17 00:00:00 2001 From: Florian Fischer <florian.fischer@muhq.space> Date: Sat, 19 Feb 2022 13:55:11 +0100 Subject: [PATCH] do not define futex_waitv if already done in linux/futex.h --- emper/lib/sync/SpuriousFutex2Semaphore.cpp | 8 ++++++-- emper/lib/sync/meson.build | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/emper/lib/sync/SpuriousFutex2Semaphore.cpp b/emper/lib/sync/SpuriousFutex2Semaphore.cpp index 41abdc8b..72ffa390 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 c4476cae..8e4cd142 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', ) -- GitLab