diff options
author | Lukas Larsson <[email protected]> | 2014-02-14 14:39:49 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2014-02-24 15:16:06 +0100 |
commit | c6d34b4d3e6c7817d066dbe20e9c569ae332d2a6 (patch) | |
tree | ec9e9b50d668be2dd777ec555413aba8365d5c91 | |
parent | 6c4ee8337dff6e9b680dbff0796038948d718b5a (diff) | |
download | otp-c6d34b4d3e6c7817d066dbe20e9c569ae332d2a6.tar.gz otp-c6d34b4d3e6c7817d066dbe20e9c569ae332d2a6.tar.bz2 otp-c6d34b4d3e6c7817d066dbe20e9c569ae332d2a6.zip |
ose: Do not use spinlocks on OSE
This is because it is very easy to deadlock/livelock inbetween
processes on OSE.
-rw-r--r-- | erts/include/internal/ethread.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/erts/include/internal/ethread.h b/erts/include/internal/ethread.h index 7307bde8d9..9b1313c538 100644 --- a/erts/include/internal/ethread.h +++ b/erts/include/internal/ethread.h @@ -220,6 +220,7 @@ typedef OSPPDKEY ethr_tsd_key; #define ETHR_HAVE_THREAD_NICENESS #define ETHR_PPC_HAVE_NO_LWSYNC +#undef ETHR_HAVE_NATIVE_SPINLOCKS #else /* No supported thread lib found */ @@ -457,7 +458,11 @@ extern ethr_runtime_t ethr_runtime__; # endif #endif -#ifdef VALGRIND /* mutex as fallback for spinlock for VALGRIND */ +#if defined(VALGRIND) || defined(ETHR_OSE_THREADS) +/* mutex as fallback for spinlock for VALGRIND and OSE. + OSE cannot use spinlocks as processes working on the + same execution unit have a tendency to deadlock. + */ # undef ETHR_HAVE_NATIVE_SPINLOCKS # undef ETHR_HAVE_NATIVE_RWSPINLOCKS #else |