From dc115156203ae2d3576326bf4ab2c6c6eb99235c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Thu, 11 Mar 2021 23:12:09 +0100 Subject: [PATCH 1/2] Fix MacOS compilation error, the method to select the underlying synchronization mechanism was broken. --- .../sync/interprocess_condition.hpp | 9 +++--- .../interprocess/sync/interprocess_mutex.hpp | 29 +++++++++---------- .../sync/interprocess_recursive_mutex.hpp | 13 +++++---- .../sync/interprocess_semaphore.hpp | 11 +++---- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/include/boost/interprocess/sync/interprocess_condition.hpp b/include/boost/interprocess/sync/interprocess_condition.hpp index d15e98a..f0a9b8e 100644 --- a/include/boost/interprocess/sync/interprocess_condition.hpp +++ b/include/boost/interprocess/sync/interprocess_condition.hpp @@ -31,17 +31,16 @@ #include #include -#if defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) - #include -#elif defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) +#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) #include #define BOOST_INTERPROCESS_CONDITION_USE_POSIX //Experimental... -#elif defined (BOOST_INTERPROCESS_WINDOWS) +#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS) #include #define BOOST_INTERPROCESS_CONDITION_USE_WINAPI #else - #error "Unsuported interprocess_condition" + //spin_condition is used + #include #endif #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED diff --git a/include/boost/interprocess/sync/interprocess_mutex.hpp b/include/boost/interprocess/sync/interprocess_mutex.hpp index 8de38e5..41b3c85 100644 --- a/include/boost/interprocess/sync/interprocess_mutex.hpp +++ b/include/boost/interprocess/sync/interprocess_mutex.hpp @@ -32,28 +32,25 @@ #include #include - -#if defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) - #include -namespace boost { -namespace interprocess { -namespace ipcdetail{ -namespace robust_emulation_helpers { - -template -class mutex_traits; - -}}}} - -#elif defined (BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) +#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) #include #define BOOST_INTERPROCESS_MUTEX_USE_POSIX -//Experimental... #elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS) + //Experimental... #define BOOST_INTERPROCESS_MUTEX_USE_WINAPI #include #else - #error "Unsuported interprocess_mutex" + //spin_mutex is used + #include + namespace boost { + namespace interprocess { + namespace ipcdetail{ + namespace robust_emulation_helpers { + + template + class mutex_traits; + + }}}} #endif #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED diff --git a/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp b/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp index 276fd0a..4932861 100644 --- a/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp +++ b/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp @@ -43,17 +43,18 @@ #include #include -#if defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) - #include -#elif defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) && defined (BOOST_INTERPROCESS_POSIX_RECURSIVE_MUTEXES) +#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && \ + defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) && \ + defined (BOOST_INTERPROCESS_POSIX_RECURSIVE_MUTEXES) + //Experimental... #include #define BOOST_INTERPROCESS_RECURSIVE_MUTEX_USE_POSIX -//Experimental... -#elif defined (BOOST_INTERPROCESS_WINDOWS) +#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS) #include #define BOOST_INTERPROCESS_RECURSIVE_MUTEX_USE_WINAPI #else - #error "Unsuported interprocess_recursive_mutex" + //spin_recursive_mutex is used + #include #endif #if defined (BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) diff --git a/include/boost/interprocess/sync/interprocess_semaphore.hpp b/include/boost/interprocess/sync/interprocess_semaphore.hpp index 5a9105e..32e5521 100644 --- a/include/boost/interprocess/sync/interprocess_semaphore.hpp +++ b/include/boost/interprocess/sync/interprocess_semaphore.hpp @@ -30,17 +30,18 @@ #include #include -#if defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) - #include -#elif defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) && defined(BOOST_INTERPROCESS_POSIX_UNNAMED_SEMAPHORES) +#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && \ + defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) && \ + defined(BOOST_INTERPROCESS_POSIX_UNNAMED_SEMAPHORES) #include #define BOOST_INTERPROCESS_SEMAPHORE_USE_POSIX -#elif defined (BOOST_INTERPROCESS_WINDOWS) +#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS) //Experimental... #include #define BOOST_INTERPROCESS_SEMAPHORE_USE_WINAPI #else - #error "Unsuported interprocess_semaphore" + //spin_semaphore is used + #include #endif #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED From 3a856a0343f5432cc72d4a08ad7edba09249806c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Fri, 12 Mar 2021 08:57:34 +0100 Subject: [PATCH 2/2] "robust_emulation_helpers::mutex_traits" forward declaration should be present when spin_recursive_mutex is used. --- .../sync/interprocess_recursive_mutex.hpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp b/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp index 4932861..096be7e 100644 --- a/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp +++ b/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp @@ -55,19 +55,15 @@ #else //spin_recursive_mutex is used #include -#endif + namespace boost { + namespace interprocess { + namespace ipcdetail{ + namespace robust_emulation_helpers { -#if defined (BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) -namespace boost { -namespace interprocess { -namespace ipcdetail{ -namespace robust_emulation_helpers { - -template -class mutex_traits; - -}}}} + template + class mutex_traits; + }}}} #endif #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED