aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2015-06-10 18:07:13 +0200
committerRickard Green <[email protected]>2015-06-10 18:07:13 +0200
commitd395b5c5559a18e44258ca46e4b8703189d18067 (patch)
treefce2aa60407a450645c317f4dd43e34f43161d0a
parent831aab8a46f9f659bc422fbbef4971e9e68b201f (diff)
parenta6038dac4b387a0f18be7d18467bbf8f83e8c765 (diff)
downloadotp-d395b5c5559a18e44258ca46e4b8703189d18067.tar.gz
otp-d395b5c5559a18e44258ca46e4b8703189d18067.tar.bz2
otp-d395b5c5559a18e44258ca46e4b8703189d18067.zip
Merge branch 'rickard/lost-multi-aux-work/OTP-12812'
* rickard/lost-multi-aux-work/OTP-12812: Fix lost aux work flags when setting multiple flags
-rw-r--r--erts/emulator/beam/erl_process.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 4940ffc4a0..1e7747c509 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -1193,11 +1193,11 @@ set_aux_work_flags_wakeup_nob(ErtsSchedulerSleepInfo *ssi,
ERTS_DBG_CHK_SSI_AUX_WORK(ssi);
old_flgs = erts_atomic32_read_nob(&ssi->aux_work);
- if ((old_flgs & flgs) == 0) {
+ if ((old_flgs & flgs) != flgs) {
old_flgs = erts_atomic32_read_bor_nob(&ssi->aux_work, flgs);
- if ((old_flgs & flgs) == 0) {
+ if ((old_flgs & flgs) != flgs) {
#ifdef ERTS_SMP
erts_sched_poke(ssi);
#else
@@ -1217,7 +1217,7 @@ set_aux_work_flags_wakeup_relb(ErtsSchedulerSleepInfo *ssi,
old_flgs = erts_atomic32_read_bor_relb(&ssi->aux_work, flgs);
- if ((old_flgs & flgs) == 0) {
+ if ((old_flgs & flgs) != flgs) {
#ifdef ERTS_SMP
erts_sched_poke(ssi);
#else